【发布时间】:2018-09-26 04:28:07
【问题描述】:
我正在尝试制作一个每天运行一次的 cron 作业。在调用 shell 脚本时,它调用一个 Sql 文件。这反过来将数据假脱机到文件中。该文件由 Shell 脚本选择,然后相应地邮寄。问题是当我尝试假脱机数据时,它正在写入经过的时间,而不是将查询的实际结果写入输出文件。
这是我正在使用的 sql 文件。
set define off
set numformat 99999999999999999999999999
set markup html on
set serveroutput on
set head on
set pages 3000
set echo off
DECLARE
total integer :=0;
total = select count(*) from t_c_table1 vt, t_c_table2 ti WHERE vt.f_item_id = ti.f_item_id (+) AND (f_update_date < sysdate - 30)order by F_INSERT_DATE desc;
IF total > 0 then
spool /home/output.csv
select f_name, count (*) from t_c_table1 where F_INSERT_DATE < sysdate-100 group by f_item_provider_id;
spool off
END IF
我在假脱机的 csv 文件中得到类似 Elapsed: 00:00:00.506 的输出。
我哪里出错了? 请帮忙。 在此先感谢..
【问题讨论】:
-
spool是一个 sqlplus 命令。您不能在 SQL 语句或 PL/SQL 块中使用它 -
那么我应该在哪里使用线轴?里面的shell脚本?
标签: sql oracle plsql oracle11g sqlplus