在DELPHI中如何将*.SQL的脚本(是存储过程的脚本)运行到数据库中?
在DELPHI中如何将*.SQL的脚本(是存储过程的脚本)运行到数据库中?
问题点数:20、回复次数:29Top
1 楼icd(骆驼)回复于 2002-04-22 17:36:40 得分 10
首先从文件读出*.sql的内容放在一个字符串里面,不过要把GO去掉
再用一个ADOCommand组件,设置ADOCommand的commandtext为刚才的字符串就可以拉Top
2 楼belllab(菜鸟)回复于 2002-04-22 17:50:06 得分 0
用SQLServer自带的isql.exe吧Top
3 楼outer2000(天外流星)回复于 2002-04-22 17:59:11 得分 0
用SQLServer自带的查询分析器,文件---打开---Top
4 楼dana(dana)回复于 2002-04-22 21:54:41 得分 0
不能用SQL自带的,我要在DELPHI程序中实现的。Top
5 楼badhorse(小虾)回复于 2002-04-23 11:42:45 得分 0
在SQL server 上建个存储过程Exec_SQL(@strSQL text)
在delphi中读入.sql文件的内容,作为参数传给存储过程。Top
6 楼badhorse(小虾)回复于 2002-04-23 11:57:53 得分 10
送佛送到西,存储过程的编写也很简单:
/*
功能:
执行@strSQL语句
*/
CREATE PROCEDURE sp_ExecSQL(@strSQl text) AS
exec(@strSQL)
Top
7 楼dana(dana)回复于 2002-04-24 09:41:25 得分 0
可是这样运行后提示第一行有错误,这是为什么?Top
8 楼badhorse(小虾)回复于 2002-04-24 10:04:02 得分 0
错误信息是什么?Top
9 楼dana(dana)回复于 2002-04-24 10:04:17 得分 0
我写了这样的存储过程,
CREATE PROCEDURE sp_ExecSQL(@strSQl text) AS
exec(@strSQL)
然后用stroedproc调用
with SP_exec do
begin
close;
procedurename:='sp_ExecSQL;1';
Parameters.ParamByName('@strSQl').Value:=filename;
ExecProc;
close;
end;
可是这样运行后提示第一行有错误,这是为什么?
Top
10 楼badhorse(小虾)回复于 2002-04-24 10:10:45 得分 0
参数类型怎么没有设置?另外,filename是文件名?应该是从文件读出的字符串Top
11 楼badhorse(小虾)回复于 2002-04-24 10:11:55 得分 0
你指的错误是编译时的错误吗Top
12 楼hzwantfly(小兵王嘎)回复于 2002-04-24 10:14:26 得分 0
楼上的
参数刷新一下
sp_exec.Parameters.refresh;Top
13 楼badhorse(小虾)回复于 2002-04-24 10:49:53 得分 0
我还感到奇怪,怎么不利用脚本的内容直接建立存储过程呢?Top
14 楼badhorse(小虾)回复于 2002-04-24 10:56:51 得分 0
我还感到奇怪,为什么不利用脚本直接建立存储过程呢?Top
15 楼badhorse(小虾)回复于 2002-04-24 11:00:52 得分 0
把'sp_ExecSQL;1'换成'sp_ExecSQL'试试Top
16 楼dana(dana)回复于 2002-04-24 20:03:59 得分 0
一样的.
存储过程在建立是没有出错,可是在调用时的过程中出错。(提示存储过程第1行有误)
我所传入的filename,是文件的内容。
Top
17 楼hamzsy(十二真空间)回复于 2002-04-24 20:27:23 得分 0
AdoQuery1.SQL.LoadFromFileTop
18 楼dana(dana)回复于 2002-04-24 20:37:59 得分 0
用AdoQuery1.SQL.LoadFromFile
一样的结果,提示第1行有错误.Top
19 楼pzoon(杀死日本人)回复于 2002-04-24 20:52:49 得分 0
TStoredProcTop
20 楼dana(dana)回复于 2002-04-25 11:17:37 得分 0
用脚本直接建立存储过程
是怎么个建立法?Top
21 楼badhorse(小虾)回复于 2002-04-26 09:22:28 得分 0
就是手工把脚本内容拷下来,在企业管理器建立新的存储过程,再粘贴Top
22 楼badhorse(小虾)回复于 2002-04-26 09:29:00 得分 0
先把问题定位:先传一个简单的sQL语句给存储过程。如果没有问题则要看看
读取的脚本内容是否有问题。Top
23 楼badhorse(小虾)回复于 2002-04-26 09:47:07 得分 0
我在查询分析器里这样实验了一下,是可以的:
exec sp_execsql 'begin transaction
select count(*) from tbl_awards
truncate table tbl_awards
select count(*) from tbl_awards
rollback'
Top
24 楼dana(dana)回复于 2002-04-26 09:53:01 得分 0
导入的SQL语句是没错可以在SQL脚本分析器中运行的且这个是从SQL中导出的脚本。
在存储过程中不能直接写的,因为这个是SQL脚本是会动态改变的。Top
25 楼badhorse(小虾)回复于 2002-04-26 09:59:19 得分 0
把脚本的一个示例发来看看Top
26 楼badhorse(小虾)回复于 2002-04-26 10:15:21 得分 0
你调试的时候观察到的脚本内容正确吗Top
27 楼badhorse(小虾)回复于 2002-04-26 10:18:04 得分 0
最好把完整的错误信息也发来看看Top
28 楼dana(dana)回复于 2002-04-27 10:55:13 得分 0
badhorse(小虾) :你有没有邮箱或QQ,我发过去你看看。Top
29 楼catthunder(男儿何不带吴钩)回复于 2002-04-27 16:02:04 得分 0
存储过程是要经过数据库编译的,如果没编译过,怎么能被数据库执行了?
Top
30 楼badhorse(小虾)回复于 2002-04-28 15:02:16 得分 0
我的邮箱:mmyybb@sohu.comTop
31 楼man8888(北京男人)回复于 2002-06-21 09:59:39 得分 0
我做了个控件:
www.ifrance.com/man8888/main.php
找下载中心,我的控件/TGo.Top




