zoukankan      html  css  js  c++  java
  • 根据最后修改时间查找存储过程或函数

    -- =============================================
    -- Author:        <Author,,FWM>
    -- Create date: <Create Date,,20190830>
    -- Description:    <Description,,根据最后修改时间查找存储过程或函数>
    -- =============================================
    ALTER PROCEDURE [dbo].[SearchProcOrFuncByModifyDateProc]
      @minDate DATETIME, @maxDate DATETIME, @dbs NVARCHAR(MAX), @orders NVARCHAR(MAX)
    AS
    BEGIN
      SET NOCOUNT ON;
    
      IF @minDate IS NULL
         AND @maxDate IS NULL
      BEGIN
        PRINT N'@minDate 跟 @maxDate 参数至少需要提供一个';
        RETURN;
      END;
    
      DECLARE @tempXML XML;
      DECLARE @dbTbl TABLE (dbname NVARCHAR(MAX));
    
      IF ISNULL(@dbs, N'') = N''
      BEGIN
        INSERT @dbTbl (dbname)
        SELECT name
        FROM   sys.sysdatabases
        WHERE  name NOT IN ('master', 'tempdb', 'model', 'msdb', 'OldCustomerBak');
      END;
      ELSE
      BEGIN
        SET @tempXML = N'<v>' + REPLACE(@dbs, N' ', N'</v><v>') + N'</v>';
    
        INSERT @dbTbl (dbname)
        SELECT t.val
        FROM   (SELECT t.c.value(N'.', N'NVARCHAR(MAX)') val
                FROM   @tempXML.nodes(N'/v') t(c) ) t
        WHERE  t.val <> N'';
    
        IF NOT EXISTS (SELECT 1 FROM @dbTbl)
        BEGIN
          PRINT N'请输入需要查找的数据库';
          RETURN;
        END;
      END;
    
      DECLARE @sql NVARCHAR(MAX), @condition NVARCHAR(MAX);
      SET @condition = CASE WHEN @minDate IS NOT NULL THEN N' AND o.modify_date >= ''' + CONVERT(NCHAR(19), @minDate, 120) + N''''
                            ELSE N''
                       END + CASE WHEN @maxDate IS NOT NULL THEN N' AND o.modify_date <= ''' + CONVERT(NCHAR(19), @maxDate, 120) + N''''
                                  ELSE N''
                             END;
      SET @condition = RIGHT(@condition, LEN(@condition) - LEN(N' AND'));
    
      SET @sql = (SELECT N'SELECT DISTINCT ''' + t.dbname + N''' dbname, so.name, so.xtype, o.modify_date modifyDate FROM ' + t.dbname
                         + N'.sys.sysobjects so INNER JOIN ' + t.dbname + N'.sys.objects o ON o.object_id = so.id WHERE' + @condition + N' UNION ALL '
                  FROM   @dbTbl t
                 FOR XML PATH(N''), TYPE).value('.', 'NVARCHAR(MAX)');
    
      SET @sql = LEFT(@sql, LEN(@sql) - LEN(N' UNION ALL ')) + N' ORDER BY ' + CASE WHEN ISNULL(@orders, N'') = N'' THEN N'modifyDate DESC'
                                                                                    ELSE @orders
                                                                               END;
    
      EXEC (@sql);
    END;
    Slowly I find myself
  • 相关阅读:
    Linux之安装python3.6.6
    Python之计算器
    springboot项目快速代码生成工具
    电脑忘记密码怎么办?
    HTML编辑器
    WCF的几种寄宿方式
    获取客户端IP 和 外网IP
    发送短信验证码
    动态库,服务tips
    asp.net WebService 与 WCF的区别
  • 原文地址:https://www.cnblogs.com/SDdemon/p/15568578.html
Copyright © 2011-2022 走看看