我有以下存储过程:
create or replace PROCEDURE MP9_INFORME_MUESTREOS_CABECERA
(pPlanta IN VARCHAR2,
pLinea IN VARCHAR2,
pfechaini IN DATE,
pfechafin IN DATE,
cInformeMuestreosCabecera OUT SYS_REFCURSOR)
AS
BEGIN
OPEN cInformeMuestreosCabecera FOR
'Select DISTINCT
mod_cav.id AS ID_SECCION,
cav_mol.id AS ID_MOLDE,
mod_lin.modelo AS MODELO,
cav.order_fenix AS ORDEN,
mod_cav.seccion AS SECCION,
cav.cavidad AS CAVIDAD,
cav_mol.molde AS MOLDE,
cav_mol.cavidad AS cav_mol,
mod_lin.fecha_on AS FECHA_INICIO,
mod_lin.fecha_off AS FECHA_FIN
FROM
'||pLinea||'.cnf_mod_lin mod_lin
INNER JOIN
'||pLinea||'.cnf_mod_cav mod_cav
ON (mod_lin.fecha_on = mod_cav.fecha_on AND mod_lin.fecha_off = mod_cav.fecha_off)
INNER JOIN
'||pPlanta||'.cod_cavidad cav
ON cav.ngotas IN (Select distinct maq_is.gotas FROM '||pLinea||'.cnf_maq_is maq_is)
INNER JOIN
'||pLinea||'.cnf_cav_mol cav_mol
ON (mod_lin.fecha_on = cav_mol.fecha_on AND mod_lin.fecha_off = cav_mol.fecha_off
AND
cav_mol.cavidad = to_char(mod_cav.seccion) ||cav.cavidad )
WHERE
cav_mol.status = TO_NUMBER(2)
AND
mod_lin.fecha_on < TO_DATE('||TO_CHAR(pfechafin)||')
AND
(mod_lin.fecha_off is NULL OR mod_lin.fecha_off >= TO_DATE('||TO_CHAR(pfechaini)||'))
ORDER BY
mod_cav.seccion,
cav.order_fenix';
END MP9_INFORME_MUESTREOS_CABECERA;
我有错误:
ORA-01858
我将程序更改为直接选择&#34; pfechaini&#34;日期参数。结果是&#34; 0.05十进制值&#34;。我不知道错误在哪里。
你能帮助我吗?答案 0 :(得分:0)
试试这个:
OPEN cInformeMuestreosCabecera FOR
'Select ...
WHERE ...
mod_lin.fecha_on < :p1
AND
(mod_lin.fecha_off is NULL OR mod_lin.fecha_off >= :p2)
ORDER BY ...'
USING pfechafin, pfechaini;