Administración y Optimización de Bases de Datos Oracle
Copyright 1999-2004
Manuel de la Herrán Gascón
Cursores SQL
--Este procedimiento contiene un cursor SQL que recorre y muestra
--los numeros de la tabla NUMEROS que sean menores o iguales al parametro
CREATE OR REPLACE PROCEDURE recorreNumeros1 (
pUb IN number DEFAULT 100
) is
vNum number;
CURSOR cNumeros IS
SELECT numero FROM NUMEROS WHERE NUMEROS.numero <= pUb;
BEGIN
OPEN cNumeros;
loop
FETCH cNumeros INTO vNum;
exit when cNumeros%NOTFOUND;
dbms_output.put_line('Número ' || vNum);
end loop;
CLOSE cNumeros;
END;
/
show errors
set serveroutput on;
delete from numeros;
EXEC insertaNumerosLbUbStep(1,10);
select * from numeros;
EXEC recorreNumeros1(5);
|
Otra forma de codificarlo es:
--Este procedimiento contiene un cursor SQL que recorre y muestra
--los numeros de la tabla NUMEROS que sean menores o iguales al parametro
CREATE OR REPLACE PROCEDURE recorreNumeros2 (
pUb IN number DEFAULT 100
) is
CURSOR cNumeros IS
SELECT numero, texto FROM NUMEROS WHERE NUMEROS.numero <= pUb;
regNum cNumeros%ROWTYPE;
BEGIN
OPEN cNumeros;
loop
FETCH cNumeros INTO regNum;
exit when cNumeros%NOTFOUND;
dbms_output.put_line('Número ' || regNum.numero || ' ' || regNum.texto);
end loop;
CLOSE cNumeros;
END;
/
show errors
set serveroutput on;
delete from numeros;
EXEC insertaNumerosLbUbStep(1,10);
select * from numeros;
EXEC recorreNumeros2(5);
|
Este curso esta incluido en el CD-ROM de REDcientífica. Solicítalo por correo haciendo click aquí. http://www.redcientifica.com/cdrom/
|