OracleストアドプロシージャSELECT INTOの例

OracleストアドプロシージャのSELECT INTOの例

OracleデータベースでのSELECT INTOストアドプロシージャの例を次に示します。

1. テーブルSQLスクリプト

DBUSERテーブル作成スクリプト。

CREATE TABLE DBUSER (
  USER_ID       NUMBER (5)    NOT NULL,
  USERNAME      VARCHAR2 (20)  NOT NULL,
  CREATED_BY    VARCHAR2 (20)  NOT NULL,
  CREATED_DATE  DATE          NOT NULL,
  PRIMARY KEY ( USER_ID )
 )

2. ストアドプロシージャ

ストアドプロシージャは、SELECT INTOメカニズムを使用して、一致した値をOUTパラメーターに割り当てます。

CREATE OR REPLACE PROCEDURE getDBUSERByUserId(
       p_userid IN DBUSER.USER_ID%TYPE,
       o_username OUT DBUSER.USERNAME%TYPE,
       o_createdby OUT  DBUSER.CREATED_BY%TYPE,
       o_date OUT DBUSER.CREATED_DATE%TYPE)
IS
BEGIN

  SELECT USERNAME , CREATED_BY, CREATED_DATE
  INTO o_username, o_createdby,  o_date
  from  DBUSER WHERE USER_ID = p_userid;

END;
/

3. PL / SQLからの呼び出し

PL / SQLから次のように呼び出します。

DECLARE
   o_username DBUSER.USERNAME%TYPE;
   o_createdby DBUSER.CREATED_BY%TYPE;
   o_date DBUSER.CREATED_DATE%TYPE;
BEGIN

   getDBUSERByUserId(1001,o_username,o_createdby,o_date);

   DBMS_OUTPUT.PUT_LINE('username :  ' || o_username);
   DBMS_OUTPUT.PUT_LINE('createdby :  ' || o_createdby);
   DBMS_OUTPUT.PUT_LINE('createddate :  ' || o_date);

END;
/

Result
userId = 1001のレコードは、getDBUSERByUserIdストアドプロシージャを介して表示されます。