SoloCodigo

Bases de Datos => Oracle => Mensaje iniciado por: robertogt en Jueves 4 de Octubre de 2007, 18:41

Título: Select Dentro De Un Procedimiento Almacenado
Publicado por: robertogt en Jueves 4 de Octubre de 2007, 18:41
Saludos compañeros de SC.

Voy directo al grano: tengo un select * dentro de un procedimiento

Código: Text
  1. CREATE OR REPLACE PROCEDURE selectAll ( )
  2. IS
  3. BEGIN
  4.              SELECT * FROM estudiantes
  5. END;
  6.  

el procedimiento asi como esta tiene errores, pero solo quiero que comprendan que es lo que quiero hacer. Bueno ahora lo que quiero es que a la hora que utilice este procedimiento dentro de c# en una pagina aspx, yo pueda sacar los resultados que me tira esta consulta a un listBox por ejemplo.

No se si esto sea posible hacerlo a travez de una variable de salida OUT. o es necesario el uso de cursores para esto, ya que son muchos datos los que arrojaría el select.

gracias y saludos!!!!
Título: Re: Select Dentro De Un Procedimiento Almacenado
Publicado por: JuanK en Domingo 14 de Octubre de 2007, 20:20
La forma mas comun, si bien no la mas optima para todos los casos:

Código: Text
  1.  
  2. CREATE PACKAGE PACKPRUEBA
  3. IS
  4.  
  5.   TYPE MyRefCur_t IS REF CURSOR RETURN my_table%ROWTYPE;
  6.  
  7.   PROCEDURE selectAll ( myREFCursor out MyRefCur_t R);
  8. END PACKPRUEBA;
  9. /
  10.  
  11. CREATE PACKAGE BODY PACKPRUEBA
  12. IS
  13.  
  14.   PROCEDURE selectAll ( myREFCursor out MyRefCur_t R);
  15.   IS
  16.   BEGIN
  17.     OPEN myREFCursor FOR
  18.              SELECT *
  19.              FROM estudiantes;
  20.  
  21.     RETURN myREFCursor;
  22.   END selectAll;
  23.  
  24. END PACKPRUEBA;
  25. /
  26.  
  27.  


Yo usaria funciones, y si no es un dato abrumadoramente grande de datos usara un pl/sql table retornando para c# un array o algo muy parecido.


Una forma mas facil y menos recomendada es usar ref cursor debilmente tipeados (weakly typed), es mas facil pero apenas un poco mas facil.