Oracle - Devolver varios datos/pl

   
Vista:

Devolver varios datos/pl

Publicado por jessica (9 intervenciones) el 22/09/2008 18:39:41
buenos tardes, alguienn me podria dar una orientacion de un cursor que me devuelva mas de una fila de datos, todos los que pruebo me dan error, gracais
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Devolver varios datos/pl

Publicado por Rodolfo Reyes (59 intervenciones) el 23/09/2008 19:19:29
Con este pequeño còdigo explico como mostrar un refcursor desde Pl/sql, muy ùtil para cuando necesitas comprobar datos, o simplemente procesarlos

-- Creado pro Hector Gabriel Ulloa Ligarius
-- 27 de Julio del 2005
-- Como mostrar un refcursor desde PL/SQL

--------------------
--Código del package
--------------------

create or replace PACKAGE ejemplo_package IS
--Declaro el tipo ref cursor
TYPE var_refcursor IS REF CURSOR;

--Declaro la función que retorna el ref cursor
FUNCTION retorna_datos RETURN var_refcursor;
END ejemplo_package;
/

create or replace PACKAGE BODY ejemplo_package IS

FUNCTION retorna_datos RETURN var_refcursor IS
var_cursorpackage var_refcursor;

BEGIN
OPEN var_cursorpackage FOR
SELECT table_name ,
tablespace_name
FROM user_tables
WHERE rownum < 10 --Sólo muestro 9 , pues es un ejemplo
;

RETURN var_cursorpackage;
END;
END ejemplo_package;
/

----------------------------
--Código de un bloque Pl/Sql
----------------------------
declare

--Declaración de la variable de tipo REF CURSOR
v_refcursor ejemplo_package.var_refcursor;

--Declaración de variables para dejar los valores rescatados desde el REF CURSOR
vtable_name varchar2(1000);
vtablespace_name varchar2(1000);

begin
--Se llama al package que retorna los datos desde un cursor
v_refcursor := ejemplo_package.retorna_datos;

--Se rescata el valor desde elref cursor haciendo un fetch
FETCH v_refcursor
INTO vtable_name ,
vtablespace_name;

WHILE v_refcursor%FOUND LOOP
dbms_output.put_line('Nombre : '||vtable_name||' ,Tablespace : '||vtablespace_name);
FETCH v_refcursor
INTO vtable_name ,
vtablespace_name;
END LOOP;

--Se cierra el cursor que fue abierto al momento de realizar la llamada al package
CLOSE v_refcursor;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar