暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何使用spool命令将sql脚本resultset保存到文件中,并且文件名包括 “日期格式”?

askTom 2017-07-10
415

问题描述

嗨,
我的sql脚本文件是,
SET heading       ON
SET echo            OFF
SET feedback     OFF
SET trimspool     ON
SET newpage     NONE
SET verify           OFF
SET define          OFF
SET termout        OFF
SET timing          OFF
 
SET linesize    400
SET pagesize  0
 
SPOOL check_redo_apply_xxxxxxxxxxxxxx.log
 
COL current_scn FOR 9999999999999999
 
SELECT current_scn FROM v$database;
 
SELECT MAX(sequence#) FROM v$archived_log WHERE applied='YES';
 
SELECT MAX(sequence#) FROM v$archived_log WHERE applied='NO';
 
SELECT process,pid,status,sequence#,block#,blocks,delay_mins FROM v$managed_standby;
 
SELECT sequence#,status,archived FROM v$standby_log;
 
COL name                   FOR  a24
COL value                   FOR  a12
COL unit                      FOR  a28
COL time_computed   FOR  a20
COL datum_time         FOR  a20
 
SELECT * FROM v$dataguard_stats;
 
SPOOL OFF
复制


请问 'xxxxxxxxxxxxxxxx' 中的 'SPOOL check_redo_apply_xxxxxxxxxxxxxx.log ',我想使用日期格式,如何在SQLPLUS中添加它?

谢谢。

问候

全文照

专家解答

你到底想做什么?生成具有动态日期的文件名?

如果是这样,则可以使用替换变量。将列定义为具有new_value的变量。然后选择一个日期与您所需的格式掩码:

SQL> column dt new_value filedt
SQL> select to_char(sysdate,'YYYYMMDD') dt from dual;

DT
--------
20170710

SQL> spool &filedt..log
SQL> spool off
SQL> ho dir *.log
 Volume in drive C is System
 Volume Serial Number is E6AB-58D8

 Directory of C:\temp

10/07/2017  10:45                16 20170710.log
               1 File(s)             16 bytes
               0 Dir(s)  149,895,012,352 bytes free
复制


HT: 克里斯·琼斯https://blogs.oracle.com/opal/sqlplus-101-substitution-variables#9_5
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论