我有一个SQL脚本
select fh.box_name
from file_update_history fh,update_file_vw ff
WHERE
ff.file_id=fh.file_id
and fh.act_record_count IS NULL
AND FF.STATUS_CD <> 'OLD'
and to_char(fh.access_date,'YYYYMMDD') between to_char(SYSDATE, 'YYYYMMDD') and to_char(SYSDATE+1, 'YYYYMMDD')
order by fh.exp_arr_time_update_file,FF.FILE_NAME;
我需要将此SQL的输出/假脱机变为平面文件。哪个应该有查询输出。我没有将查询的输出到文件中。
我用过
sqlplus /NOLOG <<My_DB > $DB_OUTPUT_FILE
set feedback on;
set term on;
set echo on;
set heading off;
set underline off;
set pagesize 10000;
set linesize 999;
set wrap off;
WHENEVER SQLERROR EXIT 20;
connect ${My_DB_USER}/${My_DB_PASSWORD} ;
select fh.box_name
from file_update_history fh,update_file_vw ff
WHERE
ff.file_id=fh.file_id
and fh.act_record_count IS NULL
AND FF.STATUS_CD <> 'OLD'
and to_char(fh.access_date,'YYYYMMDD') between to_char(SYSDATE, 'YYYYMMDD') and to_char(SYSDATE+1, 'YYYYMMDD')
order by fh.exp_arr_time_update_file,FF.FILE_NAME;
exit
My_DB
答案 0 :(得分:1)
使用spool命令可能更容易:
sqlplus /NOLOG <<My_DB
set feedback on
set term on
set echo on
set heading off
set underline off
set pagesize 10000
set linesize 999
set wrap off
WHENEVER SQLERROR EXIT 20
connect ${My_DB_USER}/${My_DB_PASSWORD}
SET ECHO OFF
SET TERM OFF
SPOOL ${DB_OUTPUT_FILE}
select fh.box_name
from file_update_history fh,update_file_vw ff
WHERE
ff.file_id=fh.file_id
and fh.act_record_count IS NULL
AND FF.STATUS_CD <> 'OLD'
and to_char(fh.access_date,'YYYYMMDD') between to_char(SYSDATE, 'YYYYMMDD') and to_char(SYSDATE+1, 'YYYYMMDD')
order by fh.exp_arr_time_update_file,FF.FILE_NAME;
SET SPOOL OFF
exit
My_DB
答案 1 :(得分:0)
;
声明的结尾不需要connect
;现在无法检查,但是可能是导致错误,还是凭据错误?输出文件是否完全为空?什么是sqlplus
命令的返回码 - 零或20?
您可以将WHENEVER SQLERROR
更改为EXIT SQL.SQLCODE
以更好地了解出现了什么问题 - 尽管它应该在输出中 - 但有些炮弹不理解大数字。