怎样让access数据库一次执行多条sql语句? ( 积分: 200 )

  • 主题发起人 主题发起人 blyb
  • 开始时间 开始时间
B

blyb

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样让access数据库一次执行多条sql语句,像在SQL server的存储过程中一样,如:
INSERT INTO ygb(ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt) VALUES('000','SYSTEM','0','15E1E9','0','',1,0,0,0,#1905-06-16#,True,1)
INSERT INTO ygb(ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt) VALUES('A001','白琳','01','15E1E9','5','',1,0,0,0,#1905-06-16#,True,1)
INSERT INTO ygb(ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt) VALUES('A002','李霞','0101','15E1E9','10','',1,0,0,0,#1905-06-16#,True,1)
INSERT INTO ygb(ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt) VALUES('A003','蒋继坤','0101','15E1E9','9','',1,0,0,0,#1905-06-16#,True,1)
一次执行完。
 
SQL.ADD
SQL.ADD
SQL.ADD
这样不行吗,把SQL语句全写进去再执行不行吗?没有试过。
 
在access中单句执行可以,但放在一起不行,是不是它不支持
 
我就是
SQL.ADD
SQL.ADD
SQL.ADD
那样添加的,不行。
在access的查询设计器中执行,提示:SQL语句的结束位置缺少分号(;)
我加上;号后,又提示:在SQL语句结尾之后找到字符。
 
如果不行变通一下,改一下语句
insert into ygb (ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt)

select ygid,ygxm,dwid,kl,qx,gzmc,yxbz,sxje,xyye,zczl,jqrq,jqbz,sjzt from (select '000' as ygid,'SYSTEM' as ygxm ,'0'as dwid,'15E1E9' as kl ,'0' as qx,'' as gzmc,1 as yxbz,0 as sxje,0 as xyye,0 as zczl,#1905-06-16# as jqrq,True as jqbz,1 as sjzt
union
.....其他三句)
 
首先谢谢:李翔鹏,变通不是目的,如果是在不行,我可以用循环单句执行,只是想搞清原因,尽量提高些效率。
 
ACCESS的没做过,一般用的是SQLSERVER的,
 
Access不支持多句的
 
楼上正解。
 
Access是不支持多句的。
反正楼主的目的是为了提高效率,所以为什么不用批处理呢
adoquery.close;
adoquery.lockType:= ltBatchUpdate;//批处理
adoquery.open;
with adoquery do
for i:= 0 to 100 do
begin
append;
fieldByName('ygid').value:= x;
fieldByName('ygxm').value:= y;
fieldByName('dwid').value:= z;
post;
end;
adoquery.updateBatch(arAll);
如果数据量过大,就分批提交:即每100条,或每1000条批处理一下,
具体每次提交多少条要根据你总的数据量来取适当的值
 
对,access不支持多句insert,update 的,
lisongmagic的方法不错哟,可以试试
 
谢谢:lisongmagic
 
后退
顶部