PL / SQL : ESTRUCTURAS DE CONTROL

IF

SINTAXIS

IF  condicion THEN
     acciones;
ELSIF condicion THEN 
   acciones; 
ELSE
    acciones; 
END IF;

EJEMPLO

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

SINTAXIS

LOOP  -- delimitador de bucle
 accion;
 EXIT [ WHEN condicion ];
END LOOP;

EJEMPLO

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

SINTAXIS

FOR indice IN [ SECUENCIA ] LOOP
 accion;
END LOOP;

EJEMPLO

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

SINTAXIS

WHILE condicion  LOOP 
 accion;
END LOOP;

¡ TEN EN CUENTA QUE LA CONDICION SE EVALÚA AL PRINCIPIO DE CADA VUELTA !

EJEMPLO

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;
/
 
plsql/2.txt · Última modificación: 2008/05/13 10:00 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki