在 Oracle SQL 运行 期间将系统日期添加到文件名

Add System Date to file name during Oracle SQL Run

我正在 运行SQL 开发人员 (oracle) 中使用以下代码 运行 查询并将 csv 文件导出到文件夹中。我也想将系统日期添加到文件名中。我正在使用以下代码。虽然它完成了工作,但它要求用户在弹出窗口中输入日期 window。我希望摆脱弹出窗口 window,而是让代码使用系统日期。有什么办法可以消除用户输入 window?

第二个问题是,这也将 SQL 代码与查询结果一起引入到输出文件中,有什么方法可以避免同时引入 SQL 吗?

set VERIFY off 
set FEEDBACK off
set echo off 
set heading off
col date_stp new_value date_stp
Select to_char(sysdate,'yyyymmdd') date_stp from dual;

Spool 'I:\Folder\ExportData&date_stp..csv'; 
SET sqlformat csv;
Select Customer, ID, etc -- the content of the query

Spool off;

方法如下:为了避免在假脱机文件中显示 select 语句,您需要

set term off
set feed off

不是直接在SQL*Plus(或SQL开发者)中;你必须以下内容保存到一个.SQL文件中,然后运行它使用@.

所以:p.sql

set term off
set feed off

col sd new_value x
select to_char(sysdate,'YYYYMMDD') sd from dual;

spool dept&x..txt
select * From dept;
spool off

测试:

SQL> @p                                 --> call the .sql file
SQL> $dir *.txt
 Volume in drive C is OSDisk
 Volume Serial Number is 7635-F892

 Directory of C:\Users\lf

12.06.2020.  21:13               494 dept20200612.txt       --> file name is OK
               1 File(s)            494 bytes
               0 Dir(s)  260.040.732.672 bytes free

SQL> $type dept20200612.txt
                                               --> no SELECT statement here
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL>

为了停止 SQL*Plus 或 SQL 开发人员询问替换变量的值(这就是 &something 所代表的),运行 set define off.