После объявления и инициализации курсорной переменной в среде PL/SQL типа программы Pro*C, курсорная переменная передается PL/SQL. Затем, она открывается оператором OPEN для многострочного запроса на сервере, выбирается клиентом оператором FETCHи закрывается на другой стороне. В следующем примере курсорная переменная передаётся пакетной процедуре, которая открывает курсорную переменную emp_cv для выбранного запроса:
PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp, choice IN CHAR) IS
BEGIN
IF choice = 'C' THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE comm IS NOT NULL;
ELSIF choice = 'S' THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE sal > 2500;
ELSIF choice = 'J' THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE job = 'MANAGER';
END IF;
END open_emp_cv;
Оператор OPEN-FOR
Утверждение OPEN-FOR выполняет многострочный запрос соответствующий курсорной переменной. Он также выделяет ресурсы, используемые Oracle для обработки запроса и определяет активное множество, которое состоит из строк, удовлетворяющих критерию поиска запроса. Курсорная переменная устанавливается до первой строки в активном множестве.
Синтаксис:
cursor_variable |
имя переменной типа CURSOR |
select_statement |
запрос, связанный с cursor_variable, который возвращает набор значений. |
Нужно открыть курсорную переменную на сервере. Это делается путём передачи связанной переменной анонимному блоку PL/SQL. Затем блок посылается Oracle Server для выполнения. Другие утверждения OPEN-FOR могут открыть ту же курсорную переменную для других запросов. Не нужно закрывать курсорную переменную для её повторного открытия.
Можно передавать курсорную переменную в PL/SQL, вызывая хранимую процедуру, которая объявляет курсорную переменную как один из формальных параметров. В настоящее время, однако, удаленные подпрограммы не могут возвращать значения курсорных переменных. Следовательно, нельзя использовать удаленную процедуру, чтобы открыть курсорную переменную.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.