Oracle - Problemas al pasar una fecha en un parametro lexic

 
Vista:

Problemas al pasar una fecha en un parametro lexic

Publicado por Vanina (8 intervenciones) el 10/02/2004 21:54:14
¡Hola !
Le cuento que cuando paso una fecha como parte de un parametro lexico que forma un condicion WHERE me salta un error, el codigo que utilizo es el siguiente:
if :orden.fecha is not null then
V_QUERY:=V_QUERY ||' and orden.fecha = '||:orden.fecha;
end if;
Add_parameter(pl_id,'P_WHERE',text_parameter,V_QUERY);
El nombre del campo es correcto (orden.fecha) por eso no entiendo por que me da el siguiente error cuando incluyo la fecha en el parametro:
ORA-00904: invalid column name
Luego probe con otro reporte pasandola como un parametro Bind agregando en la consulta del reporte lo siguiente: and orden.fecha=:P_FECHA y funciona...
Add_parameter(pl_id, 'P_FECHA’, text_parameter, :ORDEN.FECHA);
Alguien sabe por que no funciona correctamente como parte de un parametro Lexico???
¡¡Muchas Gracias!!
Saludos,
Vani
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:Problemas al pasar una fecha en un parametro le

Publicado por vivi (45 intervenciones) el 12/02/2004 00:19:38
agregale un mensaje para ver que valor le esta pasando srv.message(500,:p_fecha);
si utilizas el lexical parameter
en el query , debes indicar &fecha -- valor del parametro
despues en el afterpform
FUNCTION AfterPForm RETURN BOOLEAN IS
BEGIN
IF :orden.fecha is not null THEN
:V_QUERY := ' and orden.fecha = '||''''||:orden.fecha||'''';
END IF;
RETURN (TRUE);
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

RE:Problemas al pasar una fecha en un parametro le

Publicado por Byron (300 intervenciones) el 12/02/2004 15:58:24
El asunto es que como es una cadena, debes especificarle el formato en que se recibe, si tu campo :orden.fecha tiene format mask = 'DD/MM/YYYY' harias lo siguiente:

if :orden.fecha is not null then
V_QUERY:=V_QUERY ||' and orden.fecha = to_date('''||:orden.fecha||''',''DD/MM/YYYY'')';
end if;

Espero funcione, ah y tambien seria bueno que extraigas la cadena final compruebas la sintaxis y la ejecutas para ver si extrae registros.

Saludos DTB
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