首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建oracle sql脚本假脱机文件

如何创建oracle sql脚本假脱机文件
EN

Stack Overflow用户
提问于 2011-12-21 21:49:48
回答 4查看 188K关注 0票数 7

我有一个关于假脱机我的程序的结果的问题。我的示例sql脚本如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
  whenever sqlerror exit failure rollback
  set heading off
  set arraysize 1
  set newpage 0
  set pages 0
  set feedback off
  set echo off
  set verify off

 declare
 ab varchar2(10) := 'Raj';
 cd varchar2(10);
 a number := 10;
 c number;
 d number;
 begin
 c := a+10;
 select ab,c into cd,d from dual;
 end;

 SPOOL 
 select cd,d from dual;
 SPOOL OFF
 EXIT;

上面的脚本不起作用,但我想这样做,在begin end块中,我们计算一些值,我想假脱机这些结果。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-21 22:16:28

这会将匿名块的输出假脱机到一个名为output_<YYYYMMDD>.txt的文件中,该文件位于本地PC C:驱动器的根目录中,其中<YYYYMMDD>是当前日期:

代码语言:javascript
代码运行次数:0
运行
复制
SET SERVEROUTPUT ON FORMAT WRAPPED
SET VERIFY OFF

SET FEEDBACK OFF
SET TERMOUT OFF

column date_column new_value today_var
select to_char(sysdate, 'yyyymmdd') date_column
  from dual
/
DBMS_OUTPUT.ENABLE(1000000);

SPOOL C:\output_&today_var..txt

DECLARE
   ab varchar2(10) := 'Raj';
   cd varchar2(10);
   a  number := 10;
   c  number;
   d  number; 
BEGIN
   c := a+10;
   --
   SELECT ab, c 
     INTO cd, d 
     FROM dual;
   --
   DBMS_OUTPUT.put_line('cd: '||cd);
   DBMS_OUTPUT.put_line('d: '||d);
END; 

SPOOL OFF

SET TERMOUT ON
SET FEEDBACK ON
SET VERIFY ON

PROMPT
PROMPT Done, please see file C:\output_&today_var..txt
PROMPT

希望这能帮上忙。

编辑:

在您的注释之后,为游标的每次迭代输出一个值(我意识到在这个示例中每个值都是相同的,但您应该理解我所做的事情的要点):

代码语言:javascript
代码运行次数:0
运行
复制
BEGIN
   c := a+10;
   --
   FOR i IN 1 .. 10
   LOOP
      c := a+10;
      -- Output the value of C
      DBMS_OUTPUT.put_line('c: '||c);
   END LOOP;
   --
END; 
票数 16
EN

Stack Overflow用户

发布于 2011-12-21 22:22:57

使用假脱机:

代码语言:javascript
代码运行次数:0
运行
复制
  set heading off
  set arraysize 1
  set newpage 0
  set pages 0
  set feedback off
  set echo off
  set verify off

variable cd varchar2(10);
variable d number;

 declare
 ab varchar2(10) := 'Raj';
 a number := 10;
 c number;
 begin
 c := a+10;
 select ab,c into :cd,:d from dual;
 end;

 SPOOL 
 select :cd,:d from dual;
 SPOOL OFF
 EXIT;
票数 2
EN

Stack Overflow用户

发布于 2017-08-21 14:18:22

BEGIN END块进行假脱机非常简单。例如,如果您需要将两个表的结果假脱机到一个文件中,那么只需使用for loop。示例代码如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
BEGIN

FOR x IN 
(
    SELECT COLUMN1,COLUMN2 FROM TABLE1
    UNION ALL
    SELECT COLUMN1,COLUMN2 FROM TABLEB
)    
LOOP
    dbms_output.put_line(x.COLUMN1 || '|' || x.COLUMN2);
END LOOP;

END;
/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8590826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档