摘自: http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html 我們在使用SqlServer時經常遇到這種情況,當修改某個表的結構後,相關的視圖就不對了而導致程序錯誤,因此就有個下面這個存儲過程。 CREATE PROCEDURE RefreshAllView AS DECLARE MyCursor CURSOR FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments')) DECLARE @name varchar(40) OPEN MyCursor FETCH NEXT FROM MyCursor INTO @name WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) begin exec sp_refreshview @name end FETCH NEXT FROM MyCursor INTO @name END CLOSE MyCursor DEALLOCATE MyCursor
執行存儲過程:
Exec RefreshAllView
------------------------------
把以上代碼做一個整合
if exists(SELECT * FROM sysobjects where ID = OBJECT_ID('RefreshAllView') and xtype='p' ) drop proc RefreshAllView go CREATE PROCEDURE RefreshAllView AS DECLARE MyCursor CURSOR FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments')) DECLARE @name varchar(40) OPEN MyCursor FETCH NEXT FROM MyCursor INTO @name WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) begin exec sp_refreshview @name end FETCH NEXT FROM MyCursor INTO @name END CLOSE MyCursor DEALLOCATE MyCursor go Exec RefreshAllView