Como sacar la informacion de una variable tipo cursor
Mire . mi pregunta es la siguiente yo necesito desplegar un campo en pantalla que se encuentra en un paquete en la base de datos y este paquete hace un llamado a un procedimiento que tiene variables de entrada y otras de salida la que me interesa esta en una variable tipo cursor y no puedo sacar la informacion que se escuentra en el cursor.
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;
-- 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;
