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

Procedimiento-> que puede estar mal?

Estas en el tema de Procedimiento-> que puede estar mal? en el foro de Oracle en Foros del Web. Que puede estar mal en el siguiente procedimiento...? Código: CREATE OR REPLACE PROCEDURE up_PedidosXCliente ( p_IdCliente IN CHAR(5), p_oCursor OUT sys_refcursor ) IS BEGIN open ...
  #1 (permalink)  
Antiguo 15/01/2008, 16:38
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 10 meses
Puntos: 0
Procedimiento-> que puede estar mal?

Que puede estar mal en el siguiente procedimiento...?
Código:
CREATE OR REPLACE PROCEDURE up_PedidosXCliente
(
    p_IdCliente IN CHAR(5),
    p_oCursor   OUT sys_refcursor
)
IS
BEGIN
    open    p_oCursor for
    SELECT  O.ORDERID , O.ORDERDATE
    FROM    ORDERS O
            INNER JOIN CUSTOMERS C ON O.CUSTOMERID = C.CUSTOMERID
    WHERE   C.CUSTOMERID = p_IdCliente;
END; 
Gracias.
Luis A.
  #2 (permalink)  
Antiguo 15/01/2008, 17:03
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Re: Procedimiento-> que puede estar mal?

Hola,

Los parametros de un procedimiento o funcion no llevan longitud, cambia

Código:
p_IdCliente IN CHAR(5)
por
Código:
p_IdCliente IN CHAR
Notas.

1. Es un poco raro que un IdCliente sea del tipo CHAR y no NUMBER.
2. Intenta evitar preguntas del tipo adivinanza, si un procedimiento no funciona, publica todo lo que puedas sobre el o los errores que encuentres, no lo tomes a mal, pero ayuda a una mejor respuesta.

Saludos
  #3 (permalink)  
Antiguo 15/01/2008, 21:39
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Procedimiento-> que puede estar mal?

Antes que nada agradecer por la atencion prestada y por la respuesta brindada.

No obstante no entiendo por que un parámetro en una funcion o procedimiento no lleve longitud... esto no ocaciona perdidad de memoria, es decir si se de antemano sé que mi parametro de entrada siempre va a ser un char de 5, por que no indicarle al procedimiento o funcion esa longitud?
Por otro lado, no veo lo raro en que un id sea de tipo char...a lo mejor estoy equivocado...
Ahh y disculpen si coloque la pregunta como un tipo de adivinanza, puesto que en realidad no sabia a que se debia el error...

... Seguiré investigando ... y tambien preguntando....
Gracias.
Luis A.
  #4 (permalink)  
Antiguo 16/01/2008, 03:20
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Re: Procedimiento-> que puede estar mal?

Hola,

Cita:
No obstante no entiendo por que un parámetro en una funcion o procedimiento no lleve longitud...
La longitud de los parametros de un procedimiento o funcion son determinadas al momento de la llamada a traves del valor que obtienen, para probarlo puedes hacer un LENGTH del parametro.

Cita:
Por otro lado, no veo lo raro en que un id sea de tipo char..
Es mas comun que un id sea NUMBER, pero no es obligatorio, solo lo comentaba porque me llamo la atencion.

Con respecto a los errores, si un procedimiento no compila, Oracle devuelve uno o varios errores dando los motivos por los que no compila, postear esa informacion ahorra mucho tiempo :)

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 17:25.