Oracle SQL*Plus>当前日期在系统变量或某种类型中可用吗?
我经常将处理程序的结果或消息假脱机到文件中。为了防止spool文件被覆盖,我在spool文件名中使用日期和时间。 使用构造列{var1}NEW_VALUE{var2}和SELECT语句是获取当前日期的大量代码。当假脱机时,我想抑制这种结构的输出,因为假脱机文件中不需要它。这需要额外的编码 SQL*Plus中是否有当前日期和时间 我正在使用以下代码:Oracle SQL*Plus>当前日期在系统变量或某种类型中可用吗?,oracle,sqlplus,Oracle,Sqlplus,我经常将处理程序的结果或消息假脱机到文件中。为了防止spool文件被覆盖,我在spool文件名中使用日期和时间。 使用构造列{var1}NEW_VALUE{var2}和SELECT语句是获取当前日期的大量代码。当假脱机时,我想抑制这种结构的输出,因为假脱机文件中不需要它。这需要额外的编码 SQL*Plus中是否有当前日期和时间 我正在使用以下代码: SET echo OFF SET feedback OFF SET termout OFF COLUMN bestandsnaam NEW_VAL
SET echo OFF
SET feedback OFF
SET termout OFF
COLUMN bestandsnaam NEW_VALUE _vv_waarde
SELECT to_char ( sysdate, 'yyyyddmm_hh24mi') bestandsnaam
FROM DUAL;
SPOOL Verwerking_&_vv_waarde.
{ processing }
SPOOL OFF
但是我想在SQL*Plus中提供sysdate或类似的东西
所以我可以编写如下代码:
SPOOL Verwerking_#sysdate#
{ processing }
SPOOL OFF
Spool文件将被命名为“Verwerking_20190409_1904”。没有其他方法可以做到这一点 如果您有许多脚本,并且只是想避免将此代码放入其中,那么可以将此代码放入您调用的脚本中,例如 get_date.sql:
SET echo OFF
SET feedback OFF
SET termout OFF
COLUMN bestandsnaam NEW_VALUE _vv_waarde
SELECT to_char ( sysdate, 'yyyyddmm_hh24mi') bestandsnaam
FROM DUAL;
SET echo ON
SET feedback ON
SET termout ON
然后,在每个脚本中,您可以简单地:
@get_date.sql
SPOOL Verwerking_&_vv_waarde.
PROMPT The date is &_vv_waarde
{ processing }
SPOOL OFF
嗯,有一个预定义的日期变量。但由于所有SQL*Plus变量都是字符数据类型,因此必须将NLS_DATE_格式设置为所需的字符串
alter session set nls_date_format = 'yyyyddmm_hh24mi';
SPOOL Verwerking_&_DATE.
...
SPOOL OFF
在spool文件名中没有直接使用当前日期和时间的方法,除非您正在做什么。据我所知 但是,如果符合您的要求,您可以使用以下代码:
dateVar=`date +%d-%b-%Y_%H%M%S`
sqlplus .......
spool Verwerking_'${dateVar}'
select ...; -- your query
spool off
Exit
干杯 根据下面的@kfinity答案判断,我认为这是一个预定义的参数。我想SQLPLUS中的快速定义会显示这一点。