Oracleデータベースのストアド・プロシージャの例は、Cursorを使用してレコードを操作またはナビゲートします。
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.ストアドプロシージャ
ストアドプロシージャは、一致したユーザ名に基づいてレコードをカーソルタイプ(
SYS__REFCURSOR
)として返します。
CREATE OR REPLACE PROCEDURE getDBUSERCursor(
p__username IN DBUSER.USERNAME%TYPE,
c__dbuser OUT SYS__REFCURSOR)
IS
BEGIN
OPEN c__dbuser FOR
SELECT ** FROM DBUSER WHERE USERNAME LIKE p__username || '%';
END;/....
=== 3. PL/SQLからのコール
返された参照カーソルを取得し、次のようなレコードをナビゲートします。
DECLARE
c
dbuser SYS
REFCURSOR;
temp__dbuser DBUSER%ROWTYPE;
BEGIN
--records are assign to cursor 'c__dbuser'
getDBUSERCursor('mkyong',c__dbuser);
LOOP
--fetch cursor 'c__dbuser' into dbuser table type 'temp__dbuser' FETCH c__dbuser INTO temp__dbuser;
--exit if no more records EXIT WHEN c__dbuser%NOTFOUND;
--print the matched username dbms__output.put__line(temp__dbuser.username);
END LOOP;
CLOSE c__dbuser;
END;/….
リンク://タグ/カーソル/[カーソル]リンク://タグ/oracle/[oracle]
ストアドプロシージャ