IF condicion THEN
acciones;
ELSIF condicion THEN
acciones;
ELSE
acciones;
END IF;
SET SERVEROUTPUT ON //(para activar los mensajes por pantalla)// DECLARE v_cobra JEFES.COBRA%TYPE ; c_nuevo_salario NUMBER := 700; BEGIN SELECT cobra INTO v_cobra FROM jefes WHERE cobra < 95; IF v_cobra = 90 THEN -- SENTENCIA IF UPDATE jefes SET cobra = c_nuevo_salario WHERE cobra = v_cobra; ELSE UPDATE jefes SET cobra = 90 WHERE cobra = v_cobra; END IF; -- LA SENTENCIA IF ACABA CON PUNTO Y COMA ; DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' JEFES CON NUEVO SALARIO '); -- CON ESTA LINEA SACO EL MENSAJE POR PANTALLA END; /
Y obtenemos:
SQL> @1 1 JEFES CON NUEVO SALARIO PL/SQL procedure successfully completed.
LOOP -- delimitador de bucle accion; EXIT [ WHEN condicion ]; END LOOP;
DECLARE
v_contador NUMBER :=1;
c_cobra NUMBER := 700;
BEGIN
LOOP -- DELIMITADOR DEL BUCLE
INSERT INTO jefes (id, nombre, apellido, cobra)
VALUES ( v_contador, 'jefecillo'||v_contador, 'apellido'||v_contador, c_cobra); -- SENTENCIA A EJECUTAR
v_contador := v_contador + 1 ; -- AUMENTAMOS EL CONTADOR
EXIT WHEN v_contador = 10; -- CONDICION DE SALIDA
END LOOP; -- FIN DE LOOP ACABA CON PUNTO Y COMA ;
END;
/
FOR indice IN [ SECUENCIA ] LOOP accion; END LOOP;
DECLARE c_cobra NUMBER := 700; BEGIN FOR i IN 20 .. 30 LOOP INSERT INTO jefes (id, nombre, apellido, cobra) VALUES ( i, 'jnom'||i, 'jape'||i, c_cobra); -- SENTENCIA A EJECUTAR END LOOP; -- FIN DE LOOP ACABA CON PUNTO Y COMA ; END; /
Con esto hemos insertado desde el jefe 20 hasta el 30
WHILE condicion LOOP accion; END LOOP;
¡ TEN EN CUENTA QUE LA CONDICION SE EVALÚA AL PRINCIPIO DE CADA VUELTA !
DECLARE
v_contador NUMBER :=40;
c_cobra NUMBER := 700;
BEGIN
WHILE v_contador < 50 LOOP
INSERT INTO jefes (id, nombre, apellido, cobra)
VALUES ( v_contador, 'jefe'||v_contador, 'ape'||v_contador, c_cobra); -- SENTENCIA A EJECUTAR
v_contador := v_contador + 1 ;
END LOOP;
END;
/