adoquery 不能执行多个mySql的SQL语句

baiduan 2007-07-26 05:59:07
如果把这些语句单个执行没错,但是合在一起就会出现问题.
sql1+';commit;'+sql2+...
sql1+';'+sql2+....
sql1+';'+#10#13+sql2+....

sql1,sql2...每个都没问题.
我拼接了起来,就出问题了,如果把拼接的语句放到mysql的客户端
那么在sql,sql2,用空格分下就都没问题了,


这到底怎么了啊????
...全文
214 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiduan 2007-07-27
  • 打赏
  • 举报
回复
没时间了,只好分条提交了.
谢谢各位.
如果有正确答案,贴在后面吧,我在开贴给分.
结贴.
pengxuan 2007-07-27
  • 打赏
  • 举报
回复
把SQl语句输出出来到查询分析器里试试
baiduan 2007-07-27
  • 打赏
  • 举报
回复
3种都实验了.....

sqlStr:='';
for i:=0 to datelist.Count -1 do
begin
if i=0 then
sqlStr:=format('ALTER TABLE %s MODIFY %s %s NULL',
[tablename,cloumnlist.Strings[i],datelist.Strings[i]])
else
sqlStr:=sqlstr+''';commit;'''+#10#13+format('ALTER TABLE %s MODIFY %s %s
NULL',[tablename,cloumnlist.Strings[i],datelist.Strings[i]]);
end;

然后sql.add,execSql.
报错:

check the manual that corresponds to your MySql server version for the right syntax to use near'';commit;;
ALTER TABLW a_areasort MODIFY state int(11) NULL'at line 1'.process stopped. Use Step or Run to continue;

还是中间出问题啊.....
78hgdong 2007-07-27
  • 打赏
  • 举报
回复
sql1+''';commit;'''+sql2+...
sql1+''';'''+sql2+....
sql1+''';'''+#10#13+sql2+....
baiduan 2007-07-27
  • 打赏
  • 举报
回复
;去掉也不行啊....
baiduan 2007-07-27
  • 打赏
  • 举报
回复
'ALTER TABLE a_areasort MODIFY mingzi varchar(20) NULL ;ALTER TABLE a_areasort MODIFY state int(11) NULL';

自己拼接的SQLstr,直接拷贝到mysql客户端则必须+个空格,2个分号任意一个后面添加才能执行
hongqi162 2007-07-27
  • 打赏
  • 举报
回复
拼接后打印出来看看sql是否有语法错误
hsmserver 2007-07-27
  • 打赏
  • 举报
回复
把';'去掉
注意空格
brightyang 2007-07-27
  • 打赏
  • 举报
回复
可以的
baiduan 2007-07-27
  • 打赏
  • 举报
回复
那有那么复杂,我就是想用Delphi告诉Mysql一次执行多个SQL,但是老不成功.
咋办涅?
ccdarkness 2007-07-26
  • 打赏
  • 举报
回复
看样子你还用到了事务处理,最好就写进存储过程里面
hsmserver 2007-07-26
  • 打赏
  • 举报
回复
可以执行多个SQL 语句

2,496

社区成员

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

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