create or replace trigger trg_yuekao
before update on kaoshengyuekao
for each row
begin
declare
begin
if :old.bk1 = '100' then
:new.bk1 := '100';
end if;
end;
end trg_yuekao;代码:
ADOQuery1.Connection:=ADOConnection1;
ADOQuery1.ParamCheck:=false;
ADOQuery1.SQL.Add(' create or replace trigger trg_yuekao before update on kaoshengyuekao for each row ');
ADOQuery1.SQL.Add(' begin ');
ADOQuery1.SQL.Add(' declare ');
ADOQuery1.SQL.Add(' begin ');
ADOQuery1.SQL.Add(' if :old.bk1 = ''100'' then ');
ADOQuery1.SQL.Add(' :new.bk1 := ''100''; ');
ADOQuery1.SQL.Add(' end if; ');
ADOQuery1.SQL.Add(' end; ');
ADOQuery1.SQL.Add(' end trg_yuekao; ');
ADOQuery1.ExecSQL;运行程序后还是不能新建触发器。
请大家帮忙
before update on kaoshengyuekao
for each row
begin
declare
begin
if :old.bk1 = '100' then
:new.bk1 := '100';
end if;
end;
end trg_yuekao;代码:
ADOQuery1.Connection:=ADOConnection1;
ADOQuery1.ParamCheck:=false;
ADOQuery1.SQL.Add(' create or replace trigger trg_yuekao before update on kaoshengyuekao for each row ');
ADOQuery1.SQL.Add(' begin ');
ADOQuery1.SQL.Add(' declare ');
ADOQuery1.SQL.Add(' begin ');
ADOQuery1.SQL.Add(' if :old.bk1 = ''100'' then ');
ADOQuery1.SQL.Add(' :new.bk1 := ''100''; ');
ADOQuery1.SQL.Add(' end if; ');
ADOQuery1.SQL.Add(' end; ');
ADOQuery1.SQL.Add(' end trg_yuekao; ');
ADOQuery1.ExecSQL;运行程序后还是不能新建触发器。
请大家帮忙
别着急答案来了
var
s:string;
begin
s:='create or replace trigger trg_yuekao '+
' before update on kaoshengyuekao '+
' for each row '+
'begin '+
'declare '+
'begin '+
' if :old.bk1 = ''100'' then '+
' :new.bk1 := ''100''; '+
' end if; '+
'end; '+
'end trg_yuekao;';
adoconnection.execute(s);//使用adoconnection来执行你的sql,原因出在你sql中存在:符号
end;
var
s:string;
begin
s:='create or replace trigger trg_yuekao '+
' before update on kaoshengyuekao '+
' for each row '+
'begin '+
' if :old.bk1 = ''100'' then '+
' :new.bk1 := ''100''; '+
' end if; '+
'end trg_yuekao;';
adoconnection.execute(s);
end;
但是用程序运行 不提示错误 触发器也没有新建
Provider=MSDAORA.1;Password=channel;User ID=channel;Data Source=DBtest;Persist Security Info=True