Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ayuda con store procedure

Estas en el tema de Ayuda con store procedure en el foro de Oracle en Foros del Web. Hola estoy creando un simple store procedure para una consulta el script es el siguiente: Código HTML: CREATE OR REPLACE PROCEDURE PR_LI_PROVEEDOR (p_id_proveedor NUMBER, tabcursor ...
  #1 (permalink)  
Antiguo 27/08/2007, 11:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 109
Antigüedad: 20 años, 4 meses
Puntos: 1
Pregunta Ayuda con store procedure

Hola estoy creando un simple store procedure para una consulta el script es el siguiente:
Código HTML:
CREATE OR REPLACE PROCEDURE               PR_LI_PROVEEDOR  (p_id_proveedor NUMBER, tabcursor IN OUT Types.cursor_type)
 IS
 BEGIN
    OPEN tabcursor FOR
        SELECT * FROM mitabla.proveedores;
 END;
y me da el siguiente error:

PLS-00201: identifier 'TYPES.CURSOR_TYPE' must be declared al compilar el store procedure desde TOAD

alguien me puede dar una ayuda como es que debo escribir este script ya que deseo tener todos los campos de mi tabla como resultado de mi consulta
  #2 (permalink)  
Antiguo 27/08/2007, 13:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 251
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Ayuda con store procedure

haz una prueba utilizando o IN o OUt no los dos
__________________
www.lomasnuevo.net
  #3 (permalink)  
Antiguo 27/08/2007, 14:03
 
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 109
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Ayuda con store procedure

me sigue dando el mismo error probe con out por que es una consulta y sigo obteniendo el mismo error
  #4 (permalink)  
Antiguo 27/08/2007, 15:44
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Re: Ayuda con store procedure

¿ que es "types" ?
  #5 (permalink)  
Antiguo 28/08/2007, 01:32
 
Fecha de Ingreso: julio-2007
Mensajes: 30
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Ayuda con store procedure

Si estas en una versión anterior a la 9i tienes que crear el paquete Types al que haces referencia, tal vez sea eso. A partir de la 9i este paquete se añadio.

CREATE OR REPLACE PACKAGE Types AS
TYPE cursor_type IS REF CURSOR;
END Types;
/

Y si por el contrario estás en una version 9i o superior reemplaza cualquier refencia a Types.cursor_type por SYS_REFCURSOR.

Saludos
  #6 (permalink)  
Antiguo 28/08/2007, 12:02
 
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 109
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Ayuda con store procedure

BUENO CREE EL PACKAGE PARA PODER EJECUTAR EL STORE PROCEDURE LO CREA SIN ERRORES PERO AL EJECUTARLO ME DA EL ERROR:

The following error has occurred:

ORA-06550: line 2, column 17:
PLS-00201: identifier 'CURSOR' must be declared
ORA-06550: line 2, column 13:
PL/SQL: Item ignored
ORA-06550: line 5, column 38:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 5, column 3:
PL/SQL: Statement ignored
Details:
ORA-06550: line 2, column 17:
PLS-00201: identifier 'CURSOR' must be declared
ORA-06550: line 2, column 13:
PL/SQL: Item ignored
ORA-06550: line 5, column 38:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 5, column 3:
PL/SQL: Statement ignored


estoy usando oracle8i
  #7 (permalink)  
Antiguo 26/09/2007, 09:23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda con store procedure

Leo_25, te aconsejo que crees un package... y en la cabecera de este declara una variable del tipo REF_CURSOR... ej:

CREATE OR REPLACE PACKAGE PCK_TEST IS
TYPE vCursor IS REF CURSOR;

PROCEDURE PR_LI_PROVEEDOR (p_id_proveedor NUMBER,
tabcursor IN OUT vcursor);
end PCK_TEST;
/

luego en el body del package

CREATE OR REPLACE PACKAGE BODY Pck_Test IS

CREATE OR REPLACE PROCEDURE PR_LI_PROVEEDOR (p_id_proveedor NUMBER, tabcursor IN OUT Types.cursor_type)
IS
BEGIN
OPEN tabcursor FOR
SELECT * FROM mitabla.proveedores;
END;

end Pck_Test;
/

Para ejecutar este procedimiento puedes crear un script y ejecutar pck_test.PR_LI_PROVEEDOR, haces un fetch del cursor de salida visualizando los resultados por el comando dbms_output.put_line.

Espero te sirva.

Saludos desde Chile
  #8 (permalink)  
Antiguo 26/09/2007, 09:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda con store procedure

ppppffffffffff me di cuenta que el mensaje era de hace mucho tiempo atrás jajajaj

en fin, la intención es lo que vale
  #9 (permalink)  
Antiguo 10/01/2008, 16:31
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 11 meses
Puntos: 0
De acuerdo Re: Ayuda con store procedure

ok... entendido.
Pero no hay una forma de que el resultado no se devuelva en un cursos y ai evitarse el recorrido.
Es decir por ejemplo en Ms Sql Server :

Código:
create procedure xxx
as
select campo1,campon from tabla
go 

y listo al ejecutar :

execute xxx

me devolvera el conjunto de filas...
No hay manera de hacer esto en oracle.
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:42.