OracleストアドプロシージャHello Worldの例

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'