Вот пример хранимой процедуры в базе данных Oracle с использованием курсора для управления записями или навигации по ним.
1. Table SQL Script
Сценарий создания таблицы 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 Получите возвращенный курсор ref и перемещайтесь по записям так:
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;/….
ссылка://тег/курсор/[курсор]ссылка://тег/оракул/[оракул]ссылка://тег/хранимая процедура/[хранимая процедура]