在 Oracle 的同一个假脱机中生成输出

Posted

技术标签:

【中文标题】在 Oracle 的同一个假脱机中生成输出【英文标题】:Generate the output in same spool in Oracle 【发布时间】:2014-06-26 10:23:59 【问题描述】:
SPOOL c:\out.SPL

    SELECT * FROM a WHERE ACCOUNT_NUMBER='&CRN' ;
    SELECT * FROM b WHERE ACCOUNT_NUMBER='&CRN' ;

    Spool off
    accept op prompt 'Do u want to generate el spool,type y ' default 'n'
    SAVE c:\query2.SQL 
       select * from getm_liab   where liab_no='a' ;

    column c me new_value x
    set termout off
    select decode(lower('&op'),'y','C:\query2.SQL','n', 'null') c from dual;

    spool c:\out.SPL APPEND
    @&x

上面的脚本是我首先运行一组查询,只有当用户键入 y 时我才会运行剩余的一组查询。但它不起作用请建议

【问题讨论】:

你得到了什么错误? 我没有收到任何错误,但没有得到我想要的..第二组查询没有运行 【参考方案1】:

q1.sql 的内容:

accept op prompt 'Do u want to generate el spool,type y ' default 'n'

column c new_value x
set veri off
set echo off
set head off
spool qyn.sql
select decode(lower('&op'),'y','@','n', '--')||'q2'  from dual;
spool off

@qyn '&1'

q2.sql 的内容:

select 'boe' from dual where dummy = '&1';
select 'oops' from dual where dummy = '&1';

sqlplus foo/far@orcl @q1 X 输出 Y:

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jun 26 15:00:13 2014

Copyright (c) 1982, 2012, Oracle.  All rights reserved.


Verbonden met:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

Do u want to generate el spool,type y y

@q2


boe


oops

输出 N:

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jun 26 15:00:54 2014

Copyright (c) 1982, 2012, Oracle.  All rights reserved.


Verbonden met:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

Do u want to generate el spool,type y n

--q2

这是处理此问题的方法之一。最简单的是使用位置变量,但您也可以将它们定义为命名变量。

【讨论】:

以上是关于在 Oracle 的同一个假脱机中生成输出的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 如何使用具有动态假脱机位置的假脱机

输入/输出(I/O)管理-第一节5:假脱机(SPOOLing)技术

SQL*Plus 中带有多个参数的假脱机输出

假脱机输出查询中涉及的多个表

spooling技术

spooling技术