helacer
Lo puedes hacer con cursores, o con variables tipo record o haciendo uso de la instrucción bulk collect.
Un ejemplo de cursores:
Código SQL:
Ver originalDECLARE
CURSOR nombre_cursor IS
SELECT campo1,campo2 FROM tabla;
campo1 VARCHAR2(100);
campo2 NUMBER;
BEGIN
--Se abre el cursor con los datos de la consulta
OPEN nombre_cursor;
--Mediante un ciclo LOOP se puede recorrer todos los registros del cursor que se requieran
LOOP
--Fetch avanza la posición del cursor. Es decir... avanzar el regsitro. Cuando estableces
--INTO la consulta devuelve 2 campos, por eso se requieren 2 variables.
FETCH nombre_cursor INTO campo1,campo2;
--Condición para que salga cuando termine de recorrer el cursor
EXIT WHEN nombre_cursor%NOTFOUND;
--Imprimir los registros de la consulta.
DBMS_OUTPUT.PUT_LINE(campo1 || ' ' || campo2);
END LOOP;
--cierre del cursor
CLOSE nombre_cursor;
END;
Un ejemplo de variables record
Código SQL:
Ver originalDECLARE
v_record tabla%ROWTYPE;
BEGIN
SELECT * INTO v_record FROM tabla WHERE campo=1;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('No encontro datos');
ELSE
DBMS_OUTPUT.PUT_LINE('Encontro datos');
END IF;
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Error: No encontro datos');
END;
Manejar variables record, tiene la desventaja que solo funciona para consultas que devuelven un unico registro.
Para emplear bulk collect creo que esta pagina lo explica bien.
http://www.devjoker.com/contenidos/T...K-COLLECT.aspx
saludos