web-dev-qa-db-ja.com

Oracle SQLスクリプトスプールファイルを作成する方法

プログラムの結果をスプールすることについて質問があります。サンプルのSQLスクリプトは次のようになります。

  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ブロックでいくつかの値を計算し、それらの結果をスプールしたいようなこのようなことをしたいと思います。

ありがとう。

8
user987900

スプール付き:

  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
Florin Ghita

BEGINENDブロックからスプールするのは非常に簡単です。たとえば、2つのテーブルからの結果をファイルにスプールする必要がある場合は、for loop。サンプルコードを以下に示します。

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
Sarath Avanavu