Sql 如果oracle中只存在数据,如何假脱机文件?
我正在使用下面的脚本生成csv文件。如果脚本运行并得到结果,我们将与列标题一起写入CSV文件。如果我们没有得到任何结果,只有标题被写入CSV文件。我不想写任何东西到CSV文件,如果我们没有得到任何结果。 如何在下面的脚本文件中实现这一点 剧本Sql 如果oracle中只存在数据,如何假脱机文件?,sql,oracle,oracle11g,oracle10g,sqlplus,Sql,Oracle,Oracle11g,Oracle10g,Sqlplus,我正在使用下面的脚本生成csv文件。如果脚本运行并得到结果,我们将与列标题一起写入CSV文件。如果我们没有得到任何结果,只有标题被写入CSV文件。我不想写任何东西到CSV文件,如果我们没有得到任何结果。 如何在下面的脚本文件中实现这一点 剧本 SET FEEDBACK OFF; SET TERMOUT OFF; SET SQLFORMAT csv; spool status.csv; select batch_id, batch_type, bu_code,
SET FEEDBACK OFF;
SET TERMOUT OFF;
SET SQLFORMAT csv;
spool status.csv;
select
batch_id,
batch_type,
bu_code,
bu_type,
status,
error_text,
cre_user_id,
to_char(upd_dtime,'DD-MON-YYYY HH.MI.SS AM') as upd_dtime,
to_char(status_created_dtime,'DD-MON-YYYY HH.MI.SS AM') as status_created_dtime,
to_char(status_queued_dtime,'DD-MON-YYYY HH.MI.SS AM') as status_queued_dtime,
to_char(status_running_dtime,'DD-MON-YYYY HH.MI.SS AM') as status_running_dtime
from cox_item;
spool off;
disconnect;
exit;
这里有一个选择:
- 声明一个变量
- 检查表中是否存在某些内容,并将结果放入该变量中
- 在
子句中使用它(变量)where
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from cars;
no rows selected
SQL>
您的脚本(我将其保存为p.sql
)
执行和结果:
SQL> @p
SQL> $type status.txt
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
在我看来不错;第一个表在这里,另一个表不在这里(甚至不是它的头)。当找到记录时,将同时生成spool sql和数据文件
在服务器上自动打印时设置反馈关闭termout在回显时设置反馈关闭head off第0页新建第0页
主机delc:\sql\01.txt
假脱机c:\sql\01.sql
挑选
'在服务器上自动打印时在newp 0 termout上设置head on echo off'
||chr(10)
||'假脱机c:\sql\01.txt'
||chr(10)
||'从用户_表中选择1,2,3,4,5,其中rownumHi,我的问题是,如果表存在并且查询没有给出任何结果,那么我们不应该将任何内容写入csv文件,这对于很多情况来说都是一种很好的技术-基本上在没有常规编程结构的工具中执行if语句。
SQL> @p
SQL> $type status.txt
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>