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;/…​.