请问用query控件如何批量执行sql语句?
我要做一个东东,把事先写在一个文件中的若干条sql语句读出来,然后在Oracle中执行,最后一起commit,请问用ADO或BDE的控件如何实现这批量执行的功能?
我还尝试过另一种方法,就是用DDE去连Oracle的sqlplus,但只能做到运行sqlplus,再要执行sql就不行了,有高手熟悉这方面技术的吗,请不吝赐教。
问题点数:50、回复次数:9Top
1 楼helloqiner(小勤)回复于 2003-12-01 15:17:45 得分 2
好像ADO的QUERY控件一次就可以执行多条SQL语句吧。Top
2 楼flyforlove(吾将远去)回复于 2003-12-01 15:21:34 得分 4
一般情况下TQuery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为 SQL 属性设置多条SQL语句。Top
3 楼windindance(风舞轻扬·白首为功名)回复于 2003-12-01 15:24:01 得分 4
SQL SERVER有命令行工具osql
ORACLE应该也有。Top
4 楼Cipherliu(孤鹰)回复于 2003-12-01 15:26:40 得分 2
关注Top
5 楼sandzou(糖醋排骨)回复于 2003-12-01 15:40:09 得分 2
试试看spTop
6 楼soundbug(兼职乞丐)回复于 2003-12-01 15:52:05 得分 30
看你是什么数据库,如果是ACCESS就不支持,如果是SQLSEVER2000就用空格隔开多条语句,如果是Oracle那么就是
begin
语句1;
语句2;
end
然后再赋值给query的Sql.Text属性Top
7 楼moyz(莫等闲)回复于 2003-12-02 09:37:43 得分 0
我用以下语句实现成功了:
with ADOQuery1 do begin
sql.Clear;
sql.Add('begin');
sql.Add('语句1;');
sql.Add('语句2;');
sql.Add('commit;');
sql.Add('end;');
execSql;
end;
但将sql直接加在ADOQuery的sql属性中则会报错:“Parameter对象被不正确地定义。提供了不一致或不完整的信息”。为什么?
Top
8 楼XXSingle(心无了然)回复于 2003-12-02 11:35:16 得分 6
应该是你的sql 语句有参数,但是你在上面的语句中没有对参数进行赋值Top
9 楼moyz(莫等闲)回复于 2003-12-02 13:25:39 得分 0
但我的sql语句并没有参数呀。不过刚才我又试了一下,居然神奇般地好了,莫名惊诧!
Anyway,非常感谢!Top




