SQL Server 修改表结构后批量更新所有视图

创建刷新视图的存储过程,入参是表名。用于修改表结构后批量更新所有视图

例如在patient_mi表里新增了字段,如果视图不刷新可能会有串列的情况。

以下面的格式执行存储过程,刷新所有用到patient_mi这张表的视图:

exec RefreshOurView 'patient_mi'

存储过程脚本:

CREATE PROCEDURE RefreshOurView
    @table_name varchar(200)
AS
BEGIN
	DECLARE MyCursor CURSOR
	FOR SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name
	FROM sys.sql_expression_dependencies AS sed  
	INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id  
	WHERE referenced_id = OBJECT_ID(N'' + @table_name + '') and o.type_desc = 'VIEW'

	DECLARE @view_name varchar(40)
	OPEN MyCursor

	FETCH NEXT FROM MyCursor 
	INTO @view_name
	WHILE (@@fetch_status <> -1)
	BEGIN
		IF (@@fetch_status <> -2)
		begin
			PRINT @view_name
			EXEC sp_refreshview @view_name
		END
	    
		FETCH NEXT FROM MyCursor INTO @view_name
	END

	CLOSE MyCursor
	DEALLOCATE MyCursor
END

路过的点个赞再走,谢谢~😊😊😊😀😀😀

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值