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