Oracle ストアド・プロシージャの呼び出し方と OUT パラメータの使い方
Oracle データベースのストアドプロシージャの呼び出し方と、OUT パラメータの使い方を解説します。SQL*Plus でも実行可能ですし、他の Oracle 接続ツールでも実行可能です。またここでは2種類のプロシージャの呼び出し方を解説します。1つは単純にストアドプロシージャを呼び出すもので、もう1つは無名 PL/SQL ブロックを使ったストアドプロシージャの呼び出し方です。
テスト用のストアドプロシージャ作成
ここではストアドプロシージャの呼び出しを行うため、テスト用のプロシージャを作成します。このプロシージャは与えられた数値を2倍にして返すプロシージャで、最初の IN パラメータ(PARAM_IN)で数値を受取り、PARAM_OUT という OUT パラメータで2倍になった数値を呼び出し元に返します。-- 与えられた数値を2倍にして返却するプロシージャ CREATE OR REPLACE PROCEDURE sample_proc (PARAM_IN IN NUMBER, PARAM_OUT OUT NUMBER) AS BEGIN PARAM_OUT := PARAM_IN * 2; END; /
ストアドプロシージャを呼び出す
ストアドプロシージャを呼び出すには、まず最初に OUT パラメータの値を受け取る変数を定義します (VARIABLE x NUMBER)。そしてストアドプロシージャを EXEC で呼び出し、最後に PRINT 文で変数の中身を画面に表示します。-- プロシージャを呼び出した結果を保存する変数を定義 VARIABLE x NUMBER -- 必要に応じてあらかじめ初期値を設定しておくことも可能 EXEC :x := -1 -- ストアドプロシージャの呼び出し EXEC sample_proc(10, :x) -- 変数値を画面に表示 PRINT x 20
無名 PL/SQL ブロックを使ってストアドプロシージャを呼び出す
今度は同じストアドプロシージャを無名 PL/SQL ブロックを使って呼び出してみます。無名 PL/SQL ブロックを使うと、全てのコマンドを1つにまとめることが出来るので便利です。-- PL/SQL の標準出力を有効にする SET SERVEROUTPUT ON -- PL/SQL 無名ブロックを使って関数を呼び出す DECLARE x NUMBER; BEGIN sample_proc(20, x); dbms_output.put_line( x ); END; / 40