Oracle - ayuda variables bind

 
Vista:

ayuda variables bind

Publicado por diego (39 intervenciones) el 17/05/2007 18:27:58
Buenas tardes,
Tengo este código en un procedimiento el cual yo no veo nada raro.

FOR cur_campo in (SELECT NOM_CAMPO_DESTINO
FROM
IFR_LIQ_DATO
WHERE
NOM_CAMPO_DESTINO IS NOT NULL
GROUP BY
NOM_CAMPO_DESTINO) LOOP
nomCampo:=cur_campo.NOM_CAMPO_DESTINO;
strSQL:='MERGE INTO IFR_LIQ_RESULTADO MODI USING( '||
'SELECT RES.COD_PERIODO, '||
'RES.COD_CONTRATO, '||
'RES.COD_CRITERIO, '||
'RES.COD_DATO, '||
'VAL.VAL_DATO AS '||nomCampo||', '||
'TRIM(TO_CHAR(VAL.VAL_DATO, '||
'DAT.COD_FORMATO_DATO, '||
'''NLS_NUMERIC_CHARACTERS = '''',.'''''')) AS '||
nomCampo||'_FRM '||
'FROM IFR_LIQ_DATO DAT, IFR_LIQ_DAT_CONT VAL, IFR_LIQ_RESULTADO RES '||
'WHERE RES.COD_PERIODO=ifr_k_ld_liquicce.GET_IFR_LIQ_FECHA_ACTIVA AND '||
'DAT.NOM_CAMPO_DESTINO=:V1 AND ' ||
'VAL.COD_DATO=DAT.COD_DATO AND '||
'RES.COD_DATO=DAT.COD_DATO_BASE AND '||
'RES.COD_PERIODO=VAL.COD_PERIODO AND '||
'RES.COD_CONTRATO=VAL.COD_CONTRATO'||
--'''||nomCampo||''' '||
' )SEL ON( '||
'MODI.COD_PERIODO=SEL.COD_PERIODO AND '||
'MODI.COD_CONTRATO=SEL.COD_CONTRATO AND '||
'MODI.COD_CRITERIO=SEL.COD_CRITERIO AND '||
'MODI.COD_DATO=SEL.COD_DATO '||
' ) WHEN MATCHED THEN '||
'UPDATE SET MODI.'||nomCampo||'=SEL.'||nomCampo||
',MODI.'||nomCampo||'_FRM=SEL.'||nomCampo||'_FRM '||
',MODI.FEC_ACTU=:V2,MODI.COD_USR=:V3 '||
'WHEN NOT MATCHED THEN '||
'INSERT (MODI.COD_PERIODO)VALUES(NULL)';
EXECUTE IMMEDIATE strSQL USING cur_campo.NOM_CAMPO_DESTINO,sysdate,ifr_k_ld_liquicce.GET_cte_cod_usuario;
END LOOP;
Pero al ejecutar este bloque dinamico me dice:
ORA-20000: ORA-01008: not all variables bound
ORA-06512: at "IFR_LD.IFR_K_LD_LIQ_CALCULO", line 154
ORA-01008: not all variables bound
Si quito la variable bind :v1 y la meto ''||nomCampo||''' '|| directamente funciona.
¿Me podéis decir por qué?
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