Categorias: Todos - bucle - código - condicional - condición

por Kevin Malitaxi 4 anos atrás

227

Sentencias de Control

En programación, las sentencias de control son fundamentales para dirigir el flujo de ejecución del código. Existen tres tipos principales: iterativas, condicionales y secuenciales.

Sentencias de Control

Sentencias de Control

Permiten cambiar el flujo de ejecución las instrucciones de nuestro código SQL.

Es así como se puede indicar la ejecución de un bloque de instrucciones cuando se cumpla una condición o simplemente hacer que se repita en tiempo de ejecución.

Referencias Bibliográficas: 1) Página Web El baúl del programador. Sentencias de Control SQL. Recuperado el 07 de noviembre del 2020 de: https://elbauldelprogramador.com/plsql-estructuras-basicas-de-control/ 2) Página Web Jean Mazuelos. Sentencias de Control Base de Datos. Recuperado el 07 de noviembre del 2020 de: https://jeanmazuelos.com/biblioteca/cursos/oracle-plsql-basico/capitulo-4-sentencias-de-control#:~:text=Las%20sentencias%20de%20control%20permiten,repita%20en%20tiempo%20de%20ejecuci%C3%B3n. 3) Página Web BIRTLH. Programación de base de datos. Recuperado el 07 de Noviembre del 2020 de: https://ikastaroak.birt.eus/edu/argitalpen/backupa/20200331/1920k/es/DAMDAW/BD/BD07/es_DAMDAW_BD07_Contenidos/website_24_estructuras_de_control_i.html l

Sentencia de Control Secuencial GOTO

DECLARE V_TOTAL NUMBER(9) := 0; V_CONTADOR NUMBER(6) := 0; BEGIN <> V_CONTADOR := V_CONTADOR + 1; V_TOTAL := V_TOTAL + V_CONTADOR; IF V_TOTAL <= 20 THEN DBMS_OUTPUT.PUT_LINE('Valor de V_TOTAL:' || V_TOTAL); GOTO calcular; END IF; END; Valor de V_TOTAL:1 Valor de V_TOTAL:3 Valor de V_TOTAL:6 Valor de V_TOTAL:10 Valor de V_TOTAL:15
permite cambiar la línea secuencial de la ejecución hacia una etiqueta. Las etiquetas son marcadas con los símbolos << y >>. Para ir dirigir la ejecución hacia una etiqueta simplemente hay que usar la sentencia GOTO:

Sentencia de Control Iterativa LOOP

DECLARE V_TOTAL NUMBER := 0; V_CONTADOR NUMBER := 0; BEGIN LOOP V_CONTADOR := V_CONTADOR + 1; V_TOTAL := V_TOTAL + V_CONTADOR; DBMS_OUTPUT.PUT_LINE('Valor de V_TOTAL:' || V_TOTAL); EXIT WHEN V_TOTAL > 20; END LOOP; END; Valor de V_TOTAL:1 Valor de V_TOTAL:3 Valor de V_TOTAL:6 Valor de V_TOTAL:10 Valor de V_TOTAL:15 Valor de V_TOTAL:21
Permite ejecutar un bloque de código de manera infinita, a diferencia de las otras sentencias iterativas, en la sentencia LOOP se debe utilizar la cláusula EXIT WHEN para colocar una condición para terminar el bucle:

Sentencia de Control Iterativa WHILE-LOOP

DECLARE V_NUM NUMBER := 1; BEGIN WHILE V_NUM <= 13 LOOP DBMS_OUTPUT.PUT_LINE('El valor V_NUM es :' || V_NUM); V_NUM := V_NUM + 2.1; END LOOP; END; El valor V_NUM es :1 El valor V_NUM es :3,1 El valor V_NUM es :5,2 El valor V_NUM es :7,3 El valor V_NUM es :9,4 El valor V_NUM es :11,5
Al igual que FOR-LOOP, permite la ejecución de una o varias instrucciones. A diferencia de la sentencia FOR-LOOP, en WHILE-LOOP la ejecución se define a partir de una condición. Veamos un ejemplo:

Sentencia de Control Iterativa FOR-LOOP

FOR i IN 1..8 LOOP DBMS_OUTPUT.PUT_LINE('El número de ésta iteración es:' || i); END LOOP; END; El número de ésta iteración es:1 El número de ésta iteración es:2 El número de ésta iteración es:3 El número de ésta iteración es:4 El número de ésta iteración es:5 El número de ésta iteración es:6 El número de ésta iteración es:7 El número de ésta iteración es:8
La sentencia FOR-LOOP permite especificar un rango de números enteros, finalmente ejecuta una secuencia de instrucciones para cada número entero dentro de la lista de números.

Sentencia de Control Iterativo

Las sentencias iterativas permiten ejecutar varias instrucciones múltiples veces. A éstas sentencias también se les conoce por el nombre de bucles repetitivos.

Sentencia de Control Condicional Case

CREATE TABLE C2( Nombre VARCHAR2(20 ), EC VARCHAR2(1) ); COMMIT; INSERT INTO C2 ( NOMBRE, EC ) VALUES ('Juan ', 'S'); INSERT INTO C2 ( NOMBRE, EC ) VALUES ('Maria', 'C'); INSERT INTO C2 ( NOMBRE, EC ) VALUES ('Ana', 'D'); INSERT INTO C2 ( NOMBRE, EC ) VALUES ('Luis', 'S'); INSERT INTO C2 ( NOMBRE, EC ) VALUES ('Pepe', NULL); COMMIT; SELECT Nombre, CASE EC WHEN 'C' THEN 'Casado/a' WHEN 'S' THEN 'Soltero/a' WHEN 'D' THEN 'Divorciado/a' ELSE 'Otros' END AS "Estado Civil" FROM C2;
Permite evaluar diferentes opciones, por cada opción se realiza una instrucción específica. Veamos un ejemplo:

Sentencia de Control Condicional (IF, THEN, ELSE)

IF condicion THEN instrucciones; ELSE IF condicion2 THEN instrucciones; ELSE IF condicion3 THEN instrucciones; END IF; END IF; END IF; IF apellido =„Pérez‟ THEN salario:= salario *1.10; --aumento de salario en un 10% ELSIF apellido =‘Martínez’ THEN salario:= salario *1.15; --aumento de salario en un 15% ELSIF apellido=‘Alvarez’ THEN salario:= salario *1.20; --aumento de salario en un 20% ELSE salario:= salario* 1.05; --aumento de salario en un 5% END IF; --Sólo se necesita un único END IF
Ésta sentencia permite la ejecución de una o varias líneas de código según una condición. La condición se especifica en la cláusula IF, en caso de que la condición sea verdadera se ejecuta el bloque de código especificado bajo la cláusula THEN, en caso contrario se ejecuta el bloque de código especificado en la cláusula ELSE.

Existen 3 Grupos de Sentencia de Control

*Secuencial
*Iterativo
*Condicional