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

posted on 2011-04-18 14:00  HelloHongfu  阅读(176)  评论(0编辑  收藏  举报

导航