OracleストアドプロシージャHello Worldの例
Oracleデータベースでストアドプロシージャ(IN、OUT、IN OUT、およびCursorパラメーター)を作成する簡単な例のリスト。 PL/SQL code is self-explanatory.
1. こんにちは世界
DBMS_OUTPUTを介して「Hello World」を出力するストアドプロシージャ。
CREATE OR REPLACE PROCEDURE procPrintHelloWorld IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; /
それを実行します
exec procPrintHelloWorld;
出力
Hello World!
2. Hello World + INパラメーター
単一のパラメータを受け入れ、「Hello World INパラメータ」+パラメータ値をDBMS_OUTPUT経由で出力するストアドプロシージャ。
CREATE OR REPLACE PROCEDURE procOneINParameter(param1 IN VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World IN parameter ' || param1); END; /
それを実行します
exec procOneINParameter('example');
出力
Hello World IN parameter example
3. Hello World + OUTパラメーター
「Hello World OUTパラメーター」値をOUTパラメーターに出力/割り当てるためのストアドプロシージャ。
CREATE OR REPLACE PROCEDURE procOneOUTParameter(outParam1 OUT VARCHAR2) IS BEGIN outParam1 := 'Hello World OUT parameter'; END; /
それを実行します
DECLARE outParam1 VARCHAR2(100); BEGIN procOneOUTParameter(outParam1); DBMS_OUTPUT.PUT_LINE(outParam1); END; /
出力
Hello World OUT parameter
4. Hello World + INOUTパラメーター
INOUTパラメーター(genericParam)を受け入れ、出力メッセージを作成し、同じパラメーター名(genericParam)に再度割り当てるストアドプロシージャ。
CREATE OR REPLACE PROCEDURE procOneINOUTParameter(genericParam IN OUT VARCHAR2) IS BEGIN genericParam := 'Hello World INOUT parameter ' || genericParam; END; /
それを実行します
DECLARE genericParam VARCHAR2(100) := 'example'; BEGIN procOneINOUTParameter(genericParam); DBMS_OUTPUT.PUT_LINE(genericParam); END; /
出力
Hello World INOUT parameter example
5. Hello World +カーソル
ストアドプロシージャ。refカーソルを返し、INパラメータを受け入れます。
CREATE OR REPLACE PROCEDURE procCursorExample( cursorParam OUT SYS_REFCURSOR, userNameParam IN VARCHAR2) IS BEGIN OPEN cursorParam FOR SELECT * FROM DBUSER WHERE USERNAME = userNameParam; END; /
それを実行します
DECLARE dbUserCursor SYS_REFCURSOR; dbUserTable DBUSER%ROWTYPE; BEGIN procCursorExample(dbUserCursor,'example'); LOOP FETCH dbUserCursor INTO dbUserTable; EXIT WHEN dbUserCursor%NOTFOUND; dbms_output.put_line(dbUserTable.user_id); END LOOP; CLOSE dbUserCursor; END; /
出力
List of the user_id which matched username='example'