2 番目のストアド プロシージャのコードのスニペット:
FOR player IN rows LOOP
currentCount := maxCount;
DBMS_OUTPUT.PUT(player.FIRSTNAME || ' ' || player.LASTNAME || ':' || player.points || ' ');
--DBMS_OUTPUT.NEW_LINE();
END LOOP;
結果の出力を 1 行で表示したい場合は DBMS_OUTPUT.NEW_LINE()
、ループの外 (ループの後) に移動する必要があります。したがって、コードは次のようになります。
FOR player IN rows LOOP
currentCount := maxCount;
DBMS_OUTPUT.PUT(player.FIRSTNAME || ' ' || player.LASTNAME || ':' || player.points || ' ');
END LOOP;
DBMS_OUTPUT.NEW_LINE();
手順をエミュレートしDBMS_OUTPUT.NEW_LINE();
た後、ループ内に保持します。DBMS_OUTPUT.PUT
DBMS_OUTPUT.PUT_LINE
SQL> create or replace procedure output1
2 is
3 l_str varchar2(100);
4 l_status number;
5 begin
6 for i in 1..7
7 loop
8 dbms_output.put('Text_' || To_char(i));
9 dbms_output.new_line;
10 end loop;
11 end;
12 /
Procedure created
SQL>
SQL> create or replace procedure output2
2 is
3 l_str varchar2(100);
4 l_status number;
5 begin
6 for i in 1..7
7 loop
8 dbms_output.put('Text_' || To_char(i));
9 end loop;
10 dbms_output.new_line;
11 end;
12 /
Procedure created
SQL> exec output1;
Text_1
Text_2
Text_3
Text_4
Text_5
Text_6
Text_7
PL/SQL procedure successfully completed
SQL> exec output2;
Text_1Text_2Text_3Text_4Text_5Text_6Text_7
PL/SQL procedure successfully completed
あなたのコードで:
SET serveroutput ON size 32000;
REM Change output file name TO proj3-NetID.OUT!
SPOOL proj3-hgeorge3.OUT;
exec DBMS_OUTPUT.enable('100000000');
オプションを使用する(ON に設定する)場合は、呼び出し手順serveroutput
は必要ありません 。DBMS_OUTPUT.enable
そして、それが呼び出されDBMS_OUTPUT.enable
た場合、数値データ型の値は、文字列ではなくパラメーターとして渡される必要があります。はい、データ型の暗黙的な変換が行われますが、回避することをお勧めします。また、バッファの最大サイズは 100 万です。