[MSSQL]批量修改存储过程视图
存储过程与视图适用
DECLARE @DBName VARCHAR(200); DECLARE @ProcName VARCHAR(200)='w_sp_Sms_ExpeOrKeepEmpl'; DECLARE C_TABLES CURSOR FAST_FORWARD FOR -- 获取全部数据库 SELECT NAME FROM MASTER..SYSDATABASES ORDER BY NAME; OPEN C_TABLES; FETCH NEXT FROM C_TABLES INTO @DBName; WHILE @@FETCH_STATUS=0 BEGIN -- 不能使用OBJECTPROPERTY方法和sysobjects表判断存储过程,必须先USE数据库后才能查到 IF OBJECT_ID('[' + @DBName + '].[dbo].[' + @ProcName + ']') IS NOT NULL BEGIN PRINT @DBName; -- 打印成功操作数据库,错误可在信息查看(普通错误直接提示,致命错误直接终止) EXEC(' USE [' + @DBName + ']; EXEC('' -- 单引号1个换4个 -- 可替换成视图 ALTER PROC [dbo].[' + @ProcName + '] @BillGuid char(36) AS SELECT * FROM Bill WHERE BillGuid=@BillGuid; '') '); END; FETCH NEXT FROM C_TABLES INTO @DBName; END CLOSE C_TABLES; DEALLOCATE C_TABLES;
注:使用SP_MSFOREACHDB受2000个字符限制,不得不改用游标
个性签名:做要做好,做到不三不四不如不做。