关于 mts,ado,oracle,trigger。呵呵,有点罗嗦(100分)

  • 主题发起人 主题发起人 firstshine
  • 开始时间 开始时间
F

firstshine

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi5下通过mts中的ado访问oracle8.0.5(已经安装patchset)。我希望为选定的表建立触发器。于是我写了一些代码形成了这么的一个字符串:
sSql:='create trigger yxgl.trigger_BBDXK_zlbf after delete or update on
yxgl.BBDXK for each row'#13#10'begin
insert into BBDXK30 (BBBM,'#13#10'BDS,
'#13#10'CZYBM,'#13#10'DQFS,'#13#10'DWBM,'#13#10'DXLX,'#13#10'DXMC,'#13#10'GD,
'#13#10'KD,'#13#10'QY,'#13#10'SJLX,'#13#10'XGSJ,'#13#10'XSGS,'#13#10'ZBX,
'#13#10'ZBY,'#13#10'ZTCC,'#13#10'ZTMC,zlbf_jlbgsj) values('#13#10':old.BBBM,
'#13#10':old.BDS,'#13#10':old.CZYBM,'#13#10':old.DQFS,'#13#10':old.DWBM,
'#13#10':old.DXLX,'#13#10':old.DXMC,'#13#10':old.GD,'#13#10':old.KD,
'#13#10':old.QY,'#13#10':old.SJLX,'#13#10':old.XGSJ,'#13#10':old.XSGS,
'#13#10':old.ZBX,'#13#10':old.ZBY,'#13#10':old.ZTCC,'#13#10':old.ZTMC,
sysdate);
end;
'
然后我把这个sql语句送到mts中执行,居然形成了这么一个触发器:
begin
insert into BBDXK30 (BBBM,
BDS,
CZYBM,
DQFS,
DWBM,
DXLX,
DXMC,
GD,
KD,
QY,
SJLX,
XGSJ,
XSGS,
ZBX,
ZBY,
ZTCC,
ZTMC,zlbf_jlbgsj) values(
:V0001,
:V0002,
:V0003,
:V0004,
:V0005,
:V0006,
:V0007,
:V0008,
:V0009,
:V0010,
:V0011,
:V0012,
:V0013,
:V0014,
:V0015,
:V0016,
:V0017,sysdate);
end;

我不知道为什么把所有的变脸全都变成了:V0001之类的东西。
这个sql语句本身是没有问题的,因为我将前面的sql语句的#13#10用回车代替后拷
贝到sqlplus中执行,可以生成正确的触发器
 
去掉#13#10可以吗?
 
createnew的方法不行,实际上,#13#10就是因为不行才加上的,但是加上去也不行
 
在Delphi中,":"这个符号代表参数,一定是Delphi将你的:OLD_??当作参数传进去了.
另外,SQL是TString类型,你用不着自己加什么#13#10,你只需接一句一句Add进去就行.
 
zhangkan的方法不行,因为我是在mtsdatamodule中调用as_execute函数来实现的
 
看了一下你的代码,#13#10作为字符串加入你的SQL语句时应该使用字符串的连接符+,请在你的代码中的#13#10的前后加上+号试试:
sSql:='create trigger yxgl.trigger_BBDXK_zlbf after delete or update on
yxgl.BBDXK for each row'#13#10'begin
insert into BBDXK30 (BBBM,'#13#10'BDS,
~~~~~~~~ ~~~~~~~
'#13#10'CZYBM,'#13#10'DQFS,'#13#10'DWBM,'#13#10'DXLX,'#13#10'DXMC,'#13#10'GD,
'#13#10'KD,'#13#10'QY,'#13#10'SJLX,'#13#10'XGSJ,'#13#10'XSGS,'#13#10'ZBX,
'#13#10'ZBY,'#13#10'ZTCC,'#13#10'ZTMC,zlbf_jlbgsj) values('#13#10':old.BBBM,
'#13#10':old.BDS,'#13#10':old.CZYBM,'#13#10':old.DQFS,'#13#10':old.DWBM,
'#13#10':old.DXLX,'#13#10':old.DXMC,'#13#10':old.GD,'#13#10':old.KD,
'#13#10':old.QY,'#13#10':old.SJLX,'#13#10':old.XGSJ,'#13#10':old.XSGS,
'#13#10':old.ZBX,'#13#10':old.ZBY,'#13#10':old.ZTCC,'#13#10':old.ZTMC,
sysdate);
end;
 
YNTW的方法也不行,哪位有w2k+oracle+delphi5的朋友可以试试
 
这个问题我已经解决了。但是你们的答案都不对,看来各位使用ado的经验还是不够丰富。
还是谢谢各位。
 
多人接受答案了。
 
后退
顶部