como hago si quiero devolver una TABLA dentro de un procedimiento o funcion almacenada en oracle??
se que con un cursor se puede ejecutar el select...
pero como lo retrono?
| |||
¿como Devuelvo Un Resultado Select Desde Un Procedimieto? como hago si quiero devolver una TABLA dentro de un procedimiento o funcion almacenada en oracle?? se que con un cursor se puede ejecutar el select... pero como lo retrono? Última edición por lesancor; 31/05/2006 a las 06:37 |
| ||||
Puedes devolver un cursor ref (tipo REF CURSOR) que te devuelva un cursor con el resultado de la select. Declaras este tipo en la cabecera de tu paquete o a nivel de esquema :
Código:
Y luego tienes tu procedimiento:type t_ref_cursor is ref cursor ;
Código:
Luego haces tu llamada desde tu lenguaje cliente o tu JSP o lo que sea; también puedes recorrerlo desde otro procedimiento, función de Oracle, ....etcprocedure dame_empleados ( cEmpleados OUT t_ref_cursor) is begin open cEmpleados for select * from emp ; end dame_empleados ; Salu2 |
| |||
Ok...pero... entinedo, pero como defino un type a Nivel de esquema o de paquete??' uso el aqua studio como cliente para conectarme con el servidor oracle por ejemplo, en mi esquema me salen un monton de carpetas, entre ellas: - tables. - procedures. - functions. - object types. - arrat types - table types. ya que cuando los defino y quiero ocupar el tipo cursor en mis procedimientos o funciones me tira un error: PLS-00905: el objeto SHEMA.T_CURSOR no es válido HE ENCONTRADO ALGO DE una instruccion PIPELINED .... pero tampoco funciona Última edición por lesancor; 31/05/2006 a las 06:59 |
| ||||
Para definir un objeto a nivel de esquema sencillamente te abres un SQLPLUS y lo creas ahí . Por ejemplo :
Código:
Lo que te comenté del REF CURSOR sólo se puede hacer dentro de un paquete/procedimiento/función o bloque anónimo. No a nivel de esquema. Perdona.SQL> create or replace type t_tabla is table of varchar2(1) ; Type created Salu2 |