日期:2014-05-17  浏览次数:20818 次

怎么在一个文件里写多个存储过程
我想更改存储过程,可以一个文件一个文件的ALTER PROCEDURE ,更新的很麻烦,能不能有种写法,把很多写好的sql文件合并成一个文件,执行一次就好了 。
有时候几十个更新文件要更新好多服务器,累死啦。
合并 sql 存储过程

------解决方案--------------------
每个之后加个go
------解决方案--------------------
exec 存储过程名
go
exec 存储过程名
go
exec 存储过程名
go
exec 存储过程名
go
保存文件就可以
------解决方案--------------------
DECLARE @folder VARCHAR(200)
SET @folder='e:\tmp'
 
DECLARE @err INT,@fso INT,@dic INT,@f INT,@fldExists BIT,@fleExists BIT,@fld INT,@fle INT,@fleList INT,@cnt INT,@eof BIT
DECLARE @t TABLE(id INT IDENTITY(1,1),fName VARCHAR(200))
--创建fso
EXEC @err=sp_OACreate 'Scripting.FileSystemObject',@fso OUTPUT
--检测指定目录是否存在
EXEC @err=sp_OAMethod @fso, 'FolderExists',@fldExists OUTPUT,@folder
 
IF @fldExists=0
    PRINT 'floder does not exist!'
ELSE
    BEGIN
 
        --将指定目录给@fld对象
        EXEC @err=sp_OAMethod @fso,'GetFolder',@fld OUTPUT,@folder
        --获取指定目录的文件集合
        EXEC @err=sp_OAGetProperty @fld,'files',@fleList OUTPUT
        --获取目录下的文件数,准备循环使用    
        EXEC @err=sp_OAGetProperty @fleList,'Count',@cnt OUTPUT
        --输出
        SELECT @err 错误编号,@fldExists 目录存在否,@cnt 文件数
        --WHILE @eof!=0
        --BEGIN
            --检测是否没有文件了
 
 
     
    END

 
------解决方案--------------------
用osql命令可以执行.sql文件.
然后把N个osql命令存为批处理文件(.bat),一次执行.
------解决方案--------------------
第一步:
第二步:然后导出文件,再批量替换
------解决方案--------------------
ALTER PROC 
...
GO
ALTER PROC
...
GO
------解决方案--------------------
批处理,顾名思义就是进行批量的处理。批处理文件是扩展名为。bat 或。cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。

简单来讲,将你所要执行的dos命令,一句句写进一个txt文件,然后直接修改文件扩展名txt为bat就可以了.
------解决方案--------------------
通过sqlcmd命令行就可以的,

1.sqlcmd命令行

sqlcmd -S PC0627JVC\MSSQLSERVER2008 -E -i c:\run_sql.sql

2.编写c:\run_sql.sql文件,文件内容:
SET NOCOUNT ON  
GO  
&n