Oracleデータベースのストアド・プロシージャ(IN、OUT、IN OUTおよびCursorパラメータ)を作成するための簡単な例のリスト。 PL/SQLコードは自明です。
1. Hello World
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パラメータ 単一のパラメータを受け取り、DBMS__OUTPUTを介して「Hello World INパラメータ」パラメータ値を出力するストアド・プロシージャ。
CREATE OR REPLACE PROCEDURE procOneINParameter(param1 IN VARCHAR2)
IS
BEGIN
DBMS__OUTPUT.PUT__LINE('Hello World IN parameter ' || param1);
END;/….
それを実行します
exec procOneINParameter('mkyong');
出力
Hello World IN parameter mkyong
3. Hello World OUTパラメータ
OUTパラメータに “Hello World 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) := ‘mkyong’;
BEGIN
procOneINOUTParameter(genericParam);
DBMS
OUTPUT.PUT
LINE(genericParam);
END;/….
出力
Hello World INOUT parameter mkyong
5. Hello World + Cursor
ストアドプロシージャ、参照カーソルを返し、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,'mkyong');
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='mkyong'