加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

刷新SQL Server所有视图、函数、存储过程

发布时间:2020-12-11 23:11:54 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 --视图、存储过程、函数名称DECLARE @NAME NVARCHAR(255);--局部游标DECLARE @CUR CURSOR --自动修改未上状态为旷课SET @CUR=CURSOR SCROLL DYNAMIC F

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

--视图、存储过程、函数名称
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 @[email?protected] + 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;

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读