【问题标题】:SQLPlus variable definitionSQLPlus 变量定义
【发布时间】:2017-02-15 04:41:37
【问题描述】:

我想在 SQLPlus 中执行此操作:定义一个名称中包含今天日期的文件,并将 SQL 语句的输出假脱机到该文件。我知道如何将 SQL 语句的输出假脱机到文件中。只是不知道如何将文件名声明为包含今天日期的变量。

例如,从 ERROR 表中选择具有今天时间戳的所有行,并将结果输出到名为 TODAYS_ERRORS_YYYYMMDD.log 的文件中。

我正在使用一个调用 SQL plus 的 BAT 文件,如下所示:

sqlplus -silent user/password@errorDB @c:\temp\error_query.sql

我能够运行上述 bat 文件并将行成功输出到具有静态文件名的文件,例如 TODAYS_ERRORS.log。只是不知道如何声明文件名以使其名称中包含今天的日期。

这就是我的error_query.sql 文件现在的样子:

set feedback off;
set echo off;

spool c:\temp\TODAYS_ERRORS.log

SELECT created_time      AS "Created Time",
       error_severity    AS "Severity",
       error_desc        AS "Error Text"
FROM ERROR
WHERE
  to_date(to_char(created_time,'YYYYMMDD') = to_date(to_char(sysdate,'YYYYMMDD');

spool off;
exit;

【问题讨论】:

    标签: batch-file sqlplus


    【解决方案1】:

    具有动态文件名的 SPOOL。
    http://www.lazydba.com/oracle/0__57310.html

    此外,可以编写 DOS 命令来获取日期。
    搜索时第一个链接:DOS + Batch + Date -> http://www.robvanderwoude.com/datetime.php

    【讨论】:

      【解决方案2】:

      您可以为您的假脱机文件创建一个动态名称,如下所示:

      col datum new_value today
      select to_char(sysdate,'YYYYMMDD') as datum from dual;
      
      set heading off
      set linesize 128
      set echo off
      set feedback off
      
      spool today_&today..log
      rem Your query here ...     
      select ...
      /
      spool off
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-03
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2011-06-11
        • 1970-01-01
        相关资源
        最近更新 更多