SQL脚本备件

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER 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

你可能感兴趣的:(sql)