プログラムの結果をスプールすることについて質問があります。サンプルの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ブロックでいくつかの値を計算し、それらの結果をスプールしたいようなこのようなことをしたいと思います。
ありがとう。
スプール付き:
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;
BEGIN
END
ブロックからスプールするのは非常に簡単です。たとえば、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;
/