sqlplus 假脱机在不同的文件中

Posted

技术标签:

【中文标题】sqlplus 假脱机在不同的文件中【英文标题】:sqlplus spool in a different files 【发布时间】:2014-08-01 10:30:10 【问题描述】:

我有 2 个选择,我需要将其移动到 2 个不同的文件中: 示例:

SET SERVEROUTPUT ON
SET TERMOUT OFF
SET LINESIZE 4000
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SPOOL SAP.CSV

DECLARE
  lRecordCount  NUMBER(10) := 2;
  lRecordCount2 NUMBER(10) := 2;
BEGIN

  FOR t IN (SELECT distinct c.customerno line
              FROM customer c
             WHERE c.status = 1
               and c.type = 2
               and c.customerno like '2%'
               and rownum <= 150)

   LOOP
    dbms_output.put_line(t.line);
    lRecordCount := lRecordCount + 1;
  END LOOP;


  FOR t2 IN (SELECT distinct i.invoiceno line
               FROM invoice i
              WHERE i.amount > 0
                and i.invoiceno is not null
                and rownum <= 150
                and i.invoiceno like '295%')

   LOOP
    dbms_output.put_line(t2.line);
    lRecordCount2 := lRecordCount2 + 1;
  END LOOP;
END;
/
SPOOL OFF
EXIT

我需要将“t”和“t2”的结果记录到两个不同的文件中:SAP.CSV、INV.CSV

sqlplus 有可能吗?如何做到这一点?

【问题讨论】:

【参考方案1】:

将您的 FOR 循环放在两个不同的匿名块中,然后在它们之间执行 SPOOL OFFSPOOL INV.CSV。第一个应该转到一个文件,第二个应该转到另一个。

【讨论】:

以上是关于sqlplus 假脱机在不同的文件中的主要内容,如果未能解决你的问题,请参考以下文章

SQLPlus – 使用假脱机创建视图结构文件

SQLPlus 假脱机追加

sqlplus 动态假脱机文件名

将假脱机文件的名称从 shell 脚本传递给 sqlplus

如何使用 SQLPLUS 假脱机到 CSV 格式的文件?

在没有提示变量文本的情况下假脱机 sqlplus 查询