osql -i 命令的问题

123liuhh 2008-07-10 11:34:32
很多很长的sql语句写在一个文本文件中
使用osql -i 命令执行

但现在遇到的问题是:
有在多个数据库中执行的语句,如果当一个数据库不存在时要跳过,对这个数据库操作的所有语句( 语句中有多个GO ) 应该怎么写
...全文
217 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hery2002 2008-07-10
  • 打赏
  • 举报
回复
if exists(select 1 from sys.databases where [name] =N'master') 
begin
--做你数据库的操作
--这中间不能使用GO
--必须在end后才能使用
end
GO

这种每段执行的效果和你需要的效果是一致的,
自己试试就知道了 :)
123liuhh 2008-07-10
  • 打赏
  • 举报
回复
修改数据库结构后,还要创建过程和函数,都是互相关连的,前面的语句不完成后面的就执行不了
123liuhh 2008-07-10
  • 打赏
  • 举报
回复
if exists(select 1 from sys.databases where [name] =N'master')
begin
--做你数据库的操作
--这中间不能使用GO
--必须在end后才能使用
end

除了这种写法还有其它方法吗,
我的数据库操作内容很多,不可能在begin 和 end 中 没有go 因为有修改数据库结构的操作
123liuhh 2008-07-10
  • 打赏
  • 举报
回复
自己顶
ojuju10 2008-07-10
  • 打赏
  • 举报
回复

对每个数据库操作前做判断:

if exists(select 1 from sysdatabases where [name] =N'dbname')
begin
.......
end
GO
hanjs 2008-07-10
  • 打赏
  • 举报
回复
路过。。。。
hery2002 2008-07-10
  • 打赏
  • 举报
回复
if exists(select 1 from sys.databases where [name] =N'master')
begin
--做你数据库的操作
--这中间不能使用GO
--必须在end后才能使用
end
GO --加在这里,
--语句多的话,拆开成多个写就行了,
--否则就跳过,
if exists(select 1 from sys.databases where [name] =N'master')
begin
--做你数据库的操作
--这中间不能使用GO
--必须在end后才能使用
end
GO --加在这里,

。。。。
hery2002 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 123liuhh 的回复:]
为什么不用标签的,
如果标签定义到后面的,再用goto,却报错
[/Quote]
建议少用标签,goto来goto去的,有时候会把自己都转晕了.

很多过程和函数,都是先要删除,再重新创建 .
还有判断有没有数据,没有插入数据.
总之,就是程序更新后,相关数据库的更新.
--这个没有问题啊。正常操作.
程序做的越久,数据库修改的语句就越多,很烦的
--你这个更新是累积更新嘛.应该是这样的.
wynlc 2008-07-10
  • 打赏
  • 举报
回复
mark
123liuhh 2008-07-10
  • 打赏
  • 举报
回复
为什么不用标签的,
如果标签定义到后面的,再用goto,却报错
123liuhh 2008-07-10
  • 打赏
  • 举报
回复
很多过程和函数,都是先要删除,再重新创建
还有判断有没有数据,没有插入数据.
总之,就是程序更新后,相关数据库的更新.
程序做的越久,数据库修改的语句就越多,很烦的

现在已经有1万多行语句了,如果 要用begin 和end 得全部整理一遍,有没有其它简单的方法了.

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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