社区
数据库相关
帖子详情
在Delphi中,用SQL脚本更新存储过程?
wakeupsleep
2002-11-08 04:13:13
我的存储过程是从SQL Server 中生成的,想用Delphi控件执行SQL脚本,达到更新存储过程的目的,现发现有两个问题:
1、SQL脚本中的GO语言,Delphi不支持,运行出错(这个可以解决)。
2、因为SQL脚本是先将存储过程删除,再建立的,即CREATE PROCEDURE前面肯定还有别的语句,而Delphi的提示是“CREATE PROCEDURE在查询中必须是第一条语句”,一直解决不了!!
请问有好的解决办法吗?
...全文
194
16
打赏
收藏
在Delphi中,用SQL脚本更新存储过程?
我的存储过程是从SQL Server 中生成的,想用Delphi控件执行SQL脚本,达到更新存储过程的目的,现发现有两个问题: 1、SQL脚本中的GO语言,Delphi不支持,运行出错(这个可以解决)。 2、因为SQL脚本是先将存储过程删除,再建立的,即CREATE PROCEDURE前面肯定还有别的语句,而Delphi的提示是“CREATE PROCEDURE在查询中必须是第一条语句”,一直解决不了!! 请问有好的解决办法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wakeupsleep
2002-11-11
打赏
举报
回复
我看了,不管执行成功与否,winexec返回值都是33,奇怪!!
wakeupsleep
2002-11-11
打赏
举报
回复
还有个问题,用WinExec、ShellExecute调用isql如何捕获sql的具体错误呢,看帮助说返回值小于31(32),就说明出错了,但好象不太正确,如:
WinExec(PChar('isql -Usa -P -Slzx -dchss -i"d:\dcreatesp.sql"'), SW_Hide);
文件d:\dcreatesp.sql不存在,它的返回值是33,这怎么解决?
wakeupsleep
2002-11-11
打赏
举报
回复
我好象还发现个问题,就是ADO的一个控件好象不支持标签,而TDataBase控件可以,象下面的代码(只是试验用的):
if 1 < 2
goto tt
commit tran
tt:
return
在ADO下运行出错,而TDataBase里可以通过!
hfclql(三毛):
我试了搜索GO#13可以实现!
firetoucher
2002-11-09
打赏
举报
回复
在服务器端编写一个存储过程,用他来执行DROP CREATE 或ALTER操作,这样在客户端只需调用这个存储过程,而且避免了两次分别调用DROP CREATE万一后一句CREATE出错而引起存储过程丢失。
腊月三毛
2002-11-09
打赏
举报
回复
因为SQL SERVER的块语句执行的以GO为块分隔,而Create Procedure一定是要在块的第一句,而TQuery或是TADOQuery都是执行一块语句的,不支持GO。所以你只有分开运行,楼上的有些是可行的,但是如果服务器和客户端是分开的(而且多数都是这样子的,我想只有程序员的才是一台机)就根本没用了。搜索GO是不现实了,比如你要执行脚本文件时,无法保证变量或是字段名称中不包含GO的。我的解决方法笨的一些,但还是有用的。我自己在脚本里每个块与块之间用固定个数的‘----...’分隔,然后运行时扫到该行就让Query执行一次。这样就是可能会运行很多次Query了。
windindance
2002-11-09
打赏
举报
回复
这个文件为什么要在客户端?
如果必须要在客户端执行,那就让他装个SQL 客户端好了,要不在安装程序中安装MSDE也行。
或者……你用SOCKET把文件传到服务器……好笨的方法……*^-^*
CloneCenter
2002-11-08
打赏
举报
回复
服务器端的 osql 执行要装入 SQL 文件,要是这个文件在客户端怎么办?
windindance
2002-11-08
打赏
举报
回复
或者软件中绑定osql.exe行不行?
windindance
2002-11-08
打赏
举报
回复
服务器有没有SQL文件?
如果有,这样行不行?
在存储过程中使用
exec xp_cmdshell 'osql ....'
wakeupsleep
2002-11-08
打赏
举报
回复
我试过用ShellExecute(Application.Handle, 'open', 'C:\Program Files\Microsoft SQL Server\80\Tools\Binn\isqlw.exe',
'isqlw /U sa /P /S lzx /d chss /q /f d:\CreateSp.sql', nil, SW_HIDE);
我怎么只是把*.sql文件装载进来了,而且查询分析器显示出来了,它不运行,上面的代码有什么问题(isqlw和/q有无都一样)??
wakeupsleep
2002-11-08
打赏
举报
回复
caoyq(草民呆瓜)
这叫是正确答案啊???
wakeupsleep
2002-11-08
打赏
举报
回复
难道真的只能找到一个GO,就取出其前面的SQL语言执行后,再往下找直到最后?
shuangsa(双萨)
这叫是正确答案啊???一个*.sql包含多个更新存储过程的代码,问题是如何把*.sql文件(我把它解析存在一个字段里)按GO#13#10分割执行!
windindance(风舞轻扬)
你的做法我想过,主要是客户端不一定安装了SQL查询分析器。
CloneCenter
2002-11-08
打赏
举报
回复
好长时间没有看到我们的大斑竹 “windindance(风舞轻扬) ”回答问题了。不过上面有个问题,要是别人没有安装 SQL 的客户端怎么办??
其实遇到 SQL 中的那些 GO 之后,就提交到服务器执行就可以了。GO 并不是真正的 SQL 语句。
windindance
2002-11-08
打赏
举报
回复
WinExec(osql -Usa -P -S(local) -dDataBase -i"1.sql"');
caoyq
2002-11-08
打赏
举报
回复
回答正确。给分吧。
shuangsa
2002-11-08
打赏
举报
回复
1、执行“DROP PROCEDURE”语句
2、执行“CREATE PROCEDURE”语句
注意:以上两个语句分两次先后执行,不要把两个语句放在一起执行
自编实用的
SQL
脚本
管理工具(
DELPHI
7)
在
DELPHI
7
中
,我们可以使用TOpenDialog组件让用户选择TXT文件,TStringList类读取和存储文件内容,TButton控件触发执行操作,TMemo组件显示执行结果。对于
SQL
解析,可以使用字符串操作函数,如SplitString,来分割...
sql
脚本
执行
2. **执行
SQL
脚本
**:
SQL
脚本
通常包含一系列的
SQL
命令,如创建表、插入数据、
更新
记录或者执行
存储过程
。在
Delphi
中
,可以使用TADOCommand组件的Execute方法来执行整个
脚本
。首先,我们需要将
脚本
文件读取到内存
中
,...
delphi
编写的
SQL
语句生成器(不是
sql
语法解析器)
用户在解压后,可以按照提供的说明安装和使用这个工具,以提升其在
Delphi
开发环境
中
编写
SQL
语句的体验。 总结来说,
Delphi
编写的
SQL
语句生成器是一个实用的开发辅助工具,它帮助用户更高效、准确地构建和分析
SQL
...
Delphi
SQL
Server数据库备份程序_
delphi
_
SQL
_Server
Delphi
_
sql
server_
2. 编写T-
SQL
备份
脚本
:在
Delphi
中
,你可以创建一个TADOCommand对象,设置其CommandText属性为
SQL
Server的BACKUP DATABASE命令,用于定义备份操作的细节,例如备份类型(完整、差异或事务日志)、备份文件路径和...
sql
mon 可以监控
delphi
编写的程序访问
sql
server的
脚本
- 实时查看:它提供了一个实时界面,可以在程序运行过程
中
立即查看执行的
SQL
语句,无需等待日志文件生成。 - 性能分析:通过分析执行时间,
SQL
MON可以帮助识别性能瓶颈,找出耗时较长的查询进行优化。 - 错误检测...
数据库相关
2,507
社区成员
88,447
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章