PROCEDIMIENTOS ANÓNIMOS
Procedimientos
anónimos para obtener los tres empleados con más
subordinados con bucle for
SET
SERVEROUTPUT ON
DECLARE
CURSOR c IS
SELECT cojefe,count(*) AS cuenta
FROM empleados
GROUP BY cojefe ORDER BY 2 DESC;
BEGIN
DBMS_OUTPUT.PUT_LINE('Prueba cursor (3
superjefes) bucle FOR');
FOR fila IN c LOOP
EXIT WHEN C%ROWCOUNT >3;
DBMS_OUTPUT.PUT_LINE(fila.cojefe||'
'||fila.cuenta);
END LOOP;
END;
/
- Procedimientos
anónimos para obtener los tres empleados con más subordinados con bucle normal
DECLARE
wjefe CHAR(4);
wcount INTEGER;
CURSOR c IS SELECT cojefe,count(*)
AS cuenta FROM empleados
GROUP BY cojefe ORDER BY 2 DESC;
fila
c%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('Prueba de
cursor (3 superjefes) con
Open/Fetch/Close ** BUCLE NORMAL');
OPEN c;
LOOP
FETCH c INTO fila;
EXIT WHEN C%NOTFOUND OR c%ROWCOUNT >3;
DBMS_OUTPUT.PUT_LINE(fila.cojefe||'
'||fila.cuenta);
END LOOP;
CLOSE c;
END;
/
- Procedimientos
anónimos para obtener los tres empleados con más subordinados con bucle while
DECLARE
wjefe CHAR(4);
wcount INTEGER;
CURSOR c IS
SELECT cojefe,count(*) AS cuenta
FROM empleados
GROUP BY cojefe ORDER BY 2 DESC;
fila
c%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('Prueba
de cursor (3 superjefes) con
Open/Fetch/Close ** BUCLE WHILE');
OPEN c;
WHILE c%ROWCOUNT<3 LOOP
FETCH c INTO fila;
EXIT WHEN C%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(fila.cojefe||'
'||fila.cuenta);
END LOOP;
CLOSE c;
END;
/
-- Para no crear ningún objeto en la BD
ROLLBACK WORK;
.jpg)
No hay comentarios:
Publicar un comentario