関数とトリガのエクスポート方法


  • 
    Create Proc [dbo].[Proc_ExportProc]
    (
    @Filter nvarchar(200) /**//*     where 1=1 */
    )
    /**//*
     Create By HJ 2007-12-3
      , , , 
    */
    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