请教ORA-01008: not all variables bound

[复制链接]
查看11 | 回复2 | 2005-9-28 12:47:00 | 显示全部楼层 |阅读模式
请教:现有两段程序,区别仅在于一段绑定变量,另外一段直接写入。绑定变量的提示ora-01008错误。直接写入的运行成功。变量在前面都已经声明。
1、提示ora-01008错误
v_sql:='MERGE INTO LDM.LSTDAY_CTR_MSG_TP_TAB A

USING (SELECT :f MSG_TP_DT,

B.REG_COD REG_COD,

B.LOAN_CTR_NO LOAN_CTR_NO,

B.TODAY_MSG_TP TODAY_MSG_TP,

DECODE(C.LSTDAY_MSG_TP,NULL,NULL,C.LSTDAY_MSG_TP) LSTDAY_MSG_TP,

DECODE(C.IS_NRML_CHNG,NULL,''Y'',DECODE(C.LSTDAY_MSG_TP,''17'',DECODE(B.TODAY_MSG_TP,''20'',''Y'',''N''),''N'')) IS_NRML_CHNG

FROM (SELECT MSG_TP_DT,REG_COD,LOAN_CTR_NO,TODAY_MSG_TP,LSTDAY_MSG_TP,IS_NRML_CHNG

FROM LDM.LSTDAY_CTR_MSG_TP_TAB

WHERE MSG_TP_DT=:g

AND REG_COD=:h) C,

ODS.MSG_CTR_CHNG_TAB B

WHERE B.REG_COD=C.REG_COD(+)

AND B.LOAN_CTR_NO=C.LOAN_CTR_NO(+)

AND B.REG_COD=:i

)D

ON (A.MSG_TP_DT=D.MSG_TP_DT AND A.REG_COD=D.REG_COD AND A.LOAN_CTR_NO=D.LOAN_CTR_NO)

WHEN MATCHED THEN UPDATE SET A.TODAY_MSG_TP=D.TODAY_MSG_TP,

A.IS_NRML_CHNG=D.IS_NRML_CHNG

WHEN NOT MATCHED THEN INSERT(MSG_TP_DT,

REG_COD,

LOAN_CTR_NO,

TODAY_MSG_TP,

LSTDAY_MSG_TP,

IS_NRML_CHNG)

VALUES(D.MSG_TP_DT,

D.REG_COD,

D.LOAN_CTR_NO,

D.TODAY_MSG_TP,

D.LSTDAY_MSG_TP,

D.IS_NRML_CHNG)';
EXECUTE IMMEDIATE v_sql USING v_HpndDate,v_HpndDate,v_AreaNo,v_AreaNo;

2、运行成功
MERGE INTO LDM.LSTDAY_CTR_MSG_TP_TAB A

USING (SELECT v_HpndDate MSG_TP_DT,

B.REG_COD REG_COD,

B.LOAN_CTR_NO LOAN_CTR_NO,

B.TODAY_MSG_TP TODAY_MSG_TP,

DECODE(C.LSTDAY_MSG_TP,NULL,NULL,C.LSTDAY_MSG_TP) LSTDAY_MSG_TP,

DECODE(C.IS_NRML_CHNG,NULL,'Y',DECODE(C.LSTDAY_MSG_TP,'17',DECODE(B.TODAY_MSG_TP,'20','Y','N'),'N')) IS_NRML_CHNG

FROM (SELECT MSG_TP_DT,REG_COD,LOAN_CTR_NO,TODAY_MSG_TP,LSTDAY_MSG_TP,IS_NRML_CHNG

FROM LDM.LSTDAY_CTR_MSG_TP_TAB

WHERE MSG_TP_DT=v_HpndDate

AND REG_COD=v_AreaNo) C,

ODS.MSG_CTR_CHNG_TAB B

WHERE B.REG_COD=C.REG_COD(+)

AND B.LOAN_CTR_NO=C.LOAN_CTR_NO(+)

AND B.REG_COD=v_AreaNo

)D

ON (A.MSG_TP_DT=D.MSG_TP_DT AND A.REG_COD=D.REG_COD AND A.LOAN_CTR_NO=D.LOAN_CTR_NO)

WHEN MATCHED THEN UPDATE SET A.TODAY_MSG_TP=D.TODAY_MSG_TP,

A.IS_NRML_CHNG=D.IS_NRML_CHNG

WHEN NOT MATCHED THEN INSERT(MSG_TP_DT,

REG_COD,

LOAN_CTR_NO,

TODAY_MSG_TP,

LSTDAY_MSG_TP,

IS_NRML_CHNG)

VALUES(D.MSG_TP_DT,

D.REG_COD,

D.LOAN_CTR_NO,

D.TODAY_MSG_TP,

D.LSTDAY_MSG_TP,

D.IS_NRML_CHNG);


回复

使用道具 举报

千问 | 2005-9-28 12:47:00 | 显示全部楼层
这个错误应该是有变量还未赋值
仔细检查检查
回复

使用道具 举报

千问 | 2005-9-28 12:47:00 | 显示全部楼层
第二段程序是从第一段中扒出来,用变量替换的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行