Batch file SQLPlus变量定义

Batch file SQLPlus变量定义,batch-file,sqlplus,Batch File,Sqlplus,我想在SQLPlus中实现这一点:定义一个名称中包含今天日期的文件,并将SQL语句的输出输出输出到该文件。我知道如何将SQL语句的输出假脱机到文件中。只是不知道如何将文件名声明为包含今天日期的变量 例如,从错误表中选择具有今天时间戳的所有行,并将结果输出到名为TODAYS\u ERRORS\u YYYYMMDD.log的文件中 我正在使用一个调用SQL plus的BAT文件,如下所示: sqlplus -silent user/password@errorDB @c:\temp\error_qu

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

例如,从错误表中选择具有今天时间戳的所有行,并将结果输出到名为
TODAYS\u ERRORS\u YYYYMMDD.log
的文件中

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

sqlplus -silent user/password@errorDB @c:\temp\error_query.sql
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
我能够运行上述bat文件并成功地将行输出到具有静态文件名的文件中,例如
TODAYS\u ERRORS.log
。只是不知道如何声明文件名,使其名称中包含今天的日期

这就是我的
error\u 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;

具有动态文件名的假脱机。

此外,还可以编写DOS命令来获取日期。

搜索时的第一个链接:DOS+Batch+Date->

您可以为spool文件创建动态名称,如下所示:

sqlplus -silent user/password@errorDB @c:\temp\error_query.sql
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