SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER Proc [dbo].[P_Sohu_ExportProc] ( @Filter nvarchar(200) =null/**//*查詢條件 例如 where 1=1 */ ) /**//* Create By 王紅福 備份預存程序,函數,觸發器等,可直接運行 */ As Begin if @Filter is null Set @Filter = '' Declare @Text varchar(8000), @Name nvarchar(100), @XType nvarchar(20) Print 'Use ' + db_name() Declare myCurrsor Cursor For Select a.[Text],b.[name] from syscomments a Left Outer Join Sysobjects b On a.id=b.id + @Filter Open myCurrsor Fetch Next from myCurrsor into @Text,@Name While @@Fetch_Status = 0 --表示讀取到資料,相當於 ADO 中 Not Eof Begin Select @XType=xtype from Sysobjects where [name]=@Name If @XType = 'TR' Begin Print 'if Exists(Select 1 from Sysobjects where xtype=''TR'' and [name]='''+@Name+''')' Print 'Drop Trigger '+@Name+'' End Else If @XType = 'FN' Begin Print 'if Exists(Select 1 from Sysobjects where xtype=''FN'' and [name]='''+@Name+''')' Print 'Drop Function '+@Name+'' End Else If @XType = 'P' Begin Print 'if Exists(Select 1 from Sysobjects where xtype=''P'' and [name]='''+@Name+''')' Print 'Drop Proc '+@Name+'' End Else GoTO NextFetch Print 'exec('''+replace(@Text,'''','''''')+''')' NextFetch: Fetch Next from myCurrsor into @Text,@Name End Close myCurrsor --關閉遊標 Deallocate myCurrsor --刪除遊標 End