Oracleストアドプロシージャカーソルの例
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]
ストアドプロシージャ