ストアドプロシージャ

ストアドプロシージャを作ってみる

プロシージャをOracleのオブジェクトとして定義する。

CREATE OR REPLACE PROCEDURE プロシージャ名(引数の宣言)
[宣言部]
BEGIN
[実行部]
EXCEPTION
[例外処理]
END ★プロシージャ名;

試しに作ってみる

ストアドプロシージャを作成するSQLを実行してみると・・・

CREATE OR REPLACE PROCEDURE p_getEname(
iEmpno IN EMP.EMPNO%TYPE
,oEname OUT EMP.ENAME%TYPE
) IS
--宣言部
BEGIN
SELECT
ENAME INTO oEname
FROM EMP
WHERE
EMPNO = iEmpno;

EXCEPTION
WHEN NO_DATA_FOUND THEN
oEname := 'NO DATA';

WHEN TOO_MANY_ROWS THEN
oEname := 'ERROR';

END p_getEname;

プロシージャの下に、オブジェクトができあがる。

実行してみる

DECLARE
--宣言部
--変数の宣言
wk_ename EMP.ENAME%TYPE;

--カーソルの宣言
CURSOR q01Selector IS
SELECT
EMPNO
FROM
EMP;

BEGIN

--プロシージャの呼び出し
FOR q01Record IN q01Selector LOOP
p_getEname(q01Record.EMPNO, wk_ename);
DBMS_OUTPUT.PUT_LINE(wk_ename);
END LOOP;
END;

SQLDeveloperから作成する方法

「プロシージャ」を選択した状態で右クリック→「新規プロシージャ」を選択

プロシージャ名、パラメータを入力し「OK」ボタン押下

プロシージャのひな型が作成される

コメント