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
  • 相关阅读:
    查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】
    MinGW32和64位交叉编译环境的安装和使用
    MinGW下编译openssl, json-c
    曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑
    Python2.6下基于rsa的加密解密
    MySQL--使用xtrabackup进行备份还原
    Python--过滤Mysql慢日志
    MySQL--将MySQL数据导入到SQL Server
    Python--命令行参数解析Demo
    python--同一mysql数据库下批量迁移数据
  • 原文地址:https://www.cnblogs.com/SDdemon/p/15568578.html
Copyright © 2011-2022 走看看