同时执行两条删除SQL语句,如何写最简洁

bug_zj 2008-08-26 10:23:51
我现在写法是:
strsql_1:='delete from table1 where Num='+ADOQuery1.FieldByName('num').AsString;
strsql_2:='delete from table2 where Num='+ADOQuery1.FieldByName('num').AsString;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(strsql_1);
adoquery2.ExecSQL;

adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(strsql_2);
adoquery2.ExecSQL;
有更简洁一点的写法吗?
...全文
754 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
panrongzeng 2008-08-28
  • 打赏
  • 举报
回复
觸發器,一起寫
Cherish20 2008-08-28
  • 打赏
  • 举报
回复
首先写一个存储过程:
CREATE PROCEDURE SU_Del
@Num int
AS
Begin Train
delete from table1 where Num= @Num
delete from table2 where Num= @Num
Commit Train

GO

外部引用:
strsql_1:='Exec SU_Del :ht0';
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(strsql_1);
adoquery2.Parameters.ParamByName('ht0').value := ADOQuery1.FieldByName('num').AsString;
adoquery2.ExecSQL;
tybeer 2008-08-28
  • 打赏
  • 举报
回复
如果是很简单,就直接DELETE,反之,可以做一个过程函数,调用即可.如:
function delrecord(sqlstr:string):boolean;
var
delquery:tadoquery;
begin
delquery:=tadoquery.create(nil);
delquery.connection:=xx;
delquery.sql.add(sqlstr);
try
delquery.exesql;
result:=true;
except
result:=false;
end;
end;
地球籍华人 2008-08-27
  • 打赏
  • 举报
回复
i:=ADOQuery1.FieldByName('num').AsInteger;
j:=……
sql1:=Format('delete from table1 where Num=%d or Num=%d',[i,j]);
bug_zj 2008-08-27
  • 打赏
  • 举报
回复
nongen:能否说清楚些,如何把sql串赋到query中去,
具体如何写呢?
nongen 2008-08-27
  • 打赏
  • 举报
回复

adoquery1.sql.clear;
adoquery1.sql.append('delete from table1 where Num='+ADOQuery1.FieldByName('num').AsString);
adoquery1.sql.append(' delete from table2 where Num='+ADOQuery1.FieldByName('num').AsString);
adoquery1.close;
adoquery1.execsql;
阿三 2008-08-26
  • 打赏
  • 举报
回复
写个存储过程,调用
ronal212121 2008-08-26
  • 打赏
  • 举报
回复
4楼...说的...
不敢恭维...
那如果我有10行的sql语句 都要一行一行的加咯?
肯定有利弊 但这样写简便 利大于弊
写的SQL语句肯定一般要在查询分析器里写好了,再粘过来嘛,就算有错粘之前就应该发现
ronal212121 2008-08-26
  • 打赏
  • 举报
回复
adoquery2.SQL.Add(SQL1+';'+SQL2);
adoquery2.ExecSQL;
lyguo 2008-08-26
  • 打赏
  • 举报
回复
为会要放到一起,这样不容易发现是哪一个出的错。
Corn1 2008-08-26
  • 打赏
  • 举报
回复
放到一起的话,每条语句最后最好加个分号 ;
auqfiudh 2008-08-26
  • 打赏
  • 举报
回复
上面就是.放到一起就行了
dh9450 2008-08-26
  • 打赏
  • 举报
回复
adoquery2.SQL.Add(strsql_1);
adoquery2.SQL.Add(strsql_2);
adoquery2.ExecSQL;
nongen 2008-08-26
  • 打赏
  • 举报
回复
query.sql.append
不需要加;和go,自动分段执行。
再简单些,不要用变量先赋值了,直接把sql串赋到query中去。
fa_ge 2008-08-26
  • 打赏
  • 举报
回复
两个sql间加个GO就可以了

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧