SqlServer更新视图存储过程函数脚本

--视图、存储过程、函数名称
DECLARE @ NAME NVARCHAR(255);
--局部游标
DECLARE @CUR CURSOR
--自动修改未上状态为旷课
SET @CUR= CURSOR SCROLL DYNAMIC FOR
SELECT NAME FROM DBO.SYSOBJECTS
     WHERE NAME NOT IN ( 'SYSCONSTRAINTS' , 'SYSSEGMENTS' )
         AND
         (
             OBJECTPROPERTY(ID, N 'IsView' ) = 1               --视图
             OR OBJECTPROPERTY(ID,N 'IsProcedure' ) = 1        --存储过程
             OR OBJECTPROPERTY(ID,N 'IsScalarFunction' ) = 1   --标量函数
             OR OBJECTPROPERTY(ID,N 'IsTableFunction' ) = 1    --标题函数
             OR OBJECTPROPERTY(ID,N 'IsInlineFunction' ) = 1   --内联函数
         );
 
OPEN @CUR;
FETCH NEXT FROM @CUR INTO @ NAME
 
WHILE (@@FETCH_STATUS=0)
BEGIN
 
     DECLARE @OldText NVARCHAR( MAX );
     DECLARE @NewText NVARCHAR( MAX );
 
     --读取创建脚本,当脚本超长时分成多条记录时合并
     SELECT @OldText=@OldText + CHAR (10) + CHAR (13) + RTRIM(TEXT) FROM SYSCOMMENTS WHERE ID = OBJECT_ID(@ NAME );
 
     --将创建脚本替换为更新脚本
     SET @NewText= REPLACE (@OldText,N 'CREATE VIEW' ,N 'ALTER VIEW' );
     SET @NewText= REPLACE (@NewText,N 'CREATE PROCEDURE' ,N 'ALTER PROCEDURE' );
     SET @NewText= REPLACE (@NewText,N 'CREATE FUNCTION' ,N 'ALTER FUNCTION' );
     
     BEGIN TRY
         EXEC (@NewText);
     END TRY
     BEGIN CATCH
         PRINT N '---------------------------------------------------------------------------' ;
         PRINT @ NAME + N ' : ' + ERROR_MESSAGE();
         --PRINT @OldText;
         PRINT N '---------------------------------------------------------------------------' ;
     END CATCH
 
     FETCH NEXT FROM @CUR INTO @ NAME
 
END
 
CLOSE @CUR;
DEALLOCATE @CUR;

转载于:https://www.cnblogs.com/fhuafeng/p/4177842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值