ストアドプロシージャを作ってみる
プロシージャを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」ボタン押下
プロシージャのひな型が作成される
コメント