ttIsql内でのOUTパラメータを使用したPL/SQLからのデータの受渡し
OUT
パラメータを使用して、PL/SQLからアプリケーションにデータを戻すことができます。
次の例では、TimesTenデータベースの空き状況に関する情報を戻します。
tt_space_info
PL/SQLプロシージャを作成し、SQLを使用してpermpct
、permmaxpct
、temppct
およびtempmaxpct
の各パラメータに値を入力します。
Command> CREATE OR REPLACE PROCEDURE tt_space_info (permpct OUT PLS_INTEGER, permmaxpct OUT PLS_INTEGER, temppct OUT PLS_INTEGER, tempmaxpct OUT PLS_INTEGER) AS monitor sys.monitor%ROWTYPE; BEGIN SELECT * INTO monitor FROM sys.monitor; permpct := monitor.perm_in_use_size * 100 / monitor.perm_allocated_size; permmaxpct := monitor.perm_in_use_high_water * 100 / monitor.perm_allocated_size; temppct := monitor.temp_in_use_size * 100 / monitor.temp_allocated_size; tempmaxpct := monitor.temp_in_use_high_water * 100 / monitor.temp_allocated_size; END; / Procedure created.
変数を宣言し、tt_space_info
をコールします。出力できるように、パラメータ値がttIsql
に戻されます。
Command> VARIABLE permpct NUMBER Command> VARIABLE permpctmax NUMBER Command> VARIABLE temppct NUMBER Command> VARIABLE temppctmax NUMBER Command> BEGIN tt_space_info(:permpct, :permpctmax, :temppct, :temppctmax); END; / PL/SQL procedure successfully completed. Command> PRINT permpct; PERMPCT : 4 Command> PRINT permpctmax; PERMPCTMAX : 4 Command> PRINT temppct; TEMPPCT : 11 Command> PRINT temppctmax; TEMPPCTMAX : 11
また、PL/SQL文で実行可能な文ハンドルを、OUT
参照カーソル・パラメータで戻すこともできます。PL/SQL文はカーソルに関連付けられている問合せを選択できます。次の例は、昇順と降順をランダムに選択する参照カーソルをオープンします。
Command> VARIABLE ref REFCURSOR; Command> BEGIN IF (mod(dbms_random.random(), 2) = 0) THEN open :ref for select object_name from SYS.ALL_OBJECTS order by 1 asc; ELSE open :ref for select object_name from SYS.ALL_OBJECTS order by 1 desc; end if; END; / PL/SQL procedure successfully completed.
参照カーソルから結果セットをフェッチするには、PRINT
コマンドを使用します。
Command> PRINT ref REF : < ACCESS$ > < ALL_ARGUMENTS > < ALL_COL_PRIVS > < ALL_DEPENDENCIES > ... 143 rows found.
または、結果セットが降順になっている場合、次のように出力されます。
Command> PRINT ref REF : < XLASUBSCRIPTIONS > < WARNING_SETTINGS$ > < VIEWS > ... 143 rows found.