在DELPHI中传递参数给ORACLE中的存储过程时,为何执行到execute immediate时总是出错?(100分)

  • 主题发起人 主题发起人 Puff
  • 开始时间 开始时间
P

Puff

Unregistered / Unconfirmed
GUEST, unregistred user!
传递参数给ORACLE中的存储过程时,为何执行到execute immediate时总是出错?而我在
PL/SQL Developer中调试时,传递同样的参数,却没有问题。我还用SQL Monitor查看了
DELPHI传递的参数,也是正确的。为什么?
存储过程的声明是这样的:
create or replace procedure PROC_CPMS020(
pClient_ID IN varchar2,
pSQLAT_Booking_Limitation IN varchar2
)
执行到这句时出错:
execute immediate pSQLAT_Booking_Limitation||to_char(MonthNum);
而且,我把出错后,异常中捕捉到的SQL语句保存下来,单独用execute
immediate执行也没错。
哪位知道原因?
 
建议你和ado来试试,看是否正常的。
如果正常,把BDE升级。
//关注此题。
 
我想应该不是ADO或BDE的问题,因为,我把异常时的pSQLAT_Booking_Limitation值
保存下来了,是正确的。难道是ORACLE的问题?
 
把你的调用代码写出来看看
 
出了什么错?
你要把错误信息贴出来才行
 
谢谢各位!我自己找到了问题的原因。因为在ORACLE中用EXECUTE IMMEDIATE执行SQL语句时,
SQL语句中的字符串必须用银号括起来,于是我想当然的在DELPHI中传参数时,也加上了单
引号,偏偏就是这个地方有问题。把我自作多情的地方去掉就可以了。
不过,怪的是,不管在DELPHI中传参数时,字符串加不加银号,在SQL Monitor和ORACLE
中看到的SQL语句都是一样的。偏偏执行的时候不行。
谢谢各位。
 
后退
顶部