Oracle - Cursor como variable de salida en StoreProcedure

 
Vista:

Cursor como variable de salida en StoreProcedure

Publicado por Celso (6 intervenciones) el 01/08/2007 20:49:33
Hola.

Queria preguntar si es posible que en un procedimiento almacenado sea posible devolver como variable de salida un cursor de datos. Si asi fuera, como se hace?.

Gracias
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:Cursor como variable de salida en StoreProcedur

Publicado por Rodolfo Reyes (445 intervenciones) el 02/08/2007 18:17:46
Si se puede, para eso existe el tipo de dato abstracto Ref Cursor, te pongo un ejemplo:

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

Cursor en oracle

Publicado por Fernando (1 intervención) el 19/11/2009 21:29:59
Por favor si alguien me puede ayudar necesito hacer un cursor que a partir de una fecha busque si en una tabla hay datos es decir por ejemplo desde hoy en un campo de una tabla hay datos aleatoriamente y tengo que buscar cual es el ultimo valor de la tabla por ejemplo ingreso valores el lunes el martes no el miercoles si el jueves no y el viernos no entonces si hoy fuera sabado quiero el valor ultimo y barrer esa tabla hasta encontrar el ultimo valor en este caso seria el del miercoles porfa ayudenme
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