使用存储过程刷新所有视图sp_refreshview刷新多个视图
问题:表添加字段后相关视图错位
--定义视图名称和异常视图名称变量
DECLARE @strRefreshViewName NVARCHAR(4000), @streErorView NVARCHAR(4000)
--定义获取所有视图名称的游标
DECLARE cursorViewName CURSOR local
FOR
SELECT name
FROM sysobjects
WHERE xtype = 'V'
AND status > = 0
SET @streErorView='';
---打开游标
OPEN cursorViewName
---循环处理每行游标数据获取视图名称,并执行系统刷新视图储存过程刷新视图。如果出错就打印错误信息。
FETCH cursorViewName INTO @strRefreshViewName
WHILE @@fetch_status = 0
BEGIN
BEGIN TRY
exec sp_refreshview @strRefreshViewName ;
END TRY
BEGIN CATCH--异常
SET @streErorView=@streErorView+@strRefreshViewName;
PRINT ( ERROR_MESSAGE() ) ;
END CATCH
FETCH cursorViewName INTO @strRefreshViewName
print @strRefreshViewName;
END
--关标游标
CLOSE cursorViewName