Sql 如果oracle中只存在数据,如何假脱机文件?

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,

我正在使用下面的脚本生成csv文件。如果脚本运行并得到结果,我们将与列标题一起写入CSV文件。如果我们没有得到任何结果,只有标题被写入CSV文件。我不想写任何东西到CSV文件,如果我们没有得到任何结果。 如何在下面的脚本文件中实现这一点

剧本

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>