пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Мова PL/SQL. Курсори явні та неявні. Управління курсорами.

Курсор – это переменная, состоящая из строк некоторой таблицы или результата запроса. Сформировав курсор, можно в программе читать и обрабатывать каждую строку курсора. Если курсор построен на основе таблицы, то можно модифицировать и удалять текущую позицию курсора.

Типичная последовательность, при операциях в данном случае с явными (определенными курсорами) будет такая:

  1. Объявление курсора и структуры данных, в которую, будут помещены найденные строки.
  2. Открытие курсора.
  3. Последовательная выборка данных.
  4. Закрытие курсора.

 

Неявные курсоры. Любой оператор DML включает в себя курсор. Так как, каждый оператор DML выполняется в пределах контекстной области и поэтому имеет курсор указывающий на контекстную область. В отличии от явных, SQL­курсор не открывается и не закрывается. PL/SQL ­ сам неявно открывает SQL­курсор, обрабатывает SQL­оператор и закрывает SQL­курсор. Для SQL­курсора операторы FETCH, OPEN, CLOSE не нужны.

Атрибуты курсора.

%ISOPEN

  • Возвращает TRUE если курсор открыт, FALSE если курсор закрыт.

%FOUND

  • Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт.
  • Возвращает NULL если курсор открыт, но выборка не была выполнена.
  • Возвращает TRUE если выборка была удачно завершена.
  • Возвращает FALSE если нет возвращаемых строк.

%NOTFOUND

  • Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт.
  • Return NULL если курсор открыт, но выборка не была выполнена.
  • Возвращает FALSE если выборка была удачно завершена.
  • Возвращает TRUE если нет возвращаемых строк.

%ROWCOUNT

  • Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт.
  • Возвращает число возвращаемых строк.
  • Атрибут ROWCOUNT не дает реального количества строк, пока вы не пройдете весь курсор. Другими словами, вы не должны полагаться на этот атрибут, чтобы сказать, сколько строк в курсоре после его открытия.

 

Цель использования курсора, в большинстве случаев, это получение строк из курсора таким образом, чтобы некоторый тип операций мог быть выполнен на данных. После объявления и открытия курсора, следующим шагом является выборка строк из курсора с помощью оператора FETCH.

  1. DECLARE 
  2.        CURSOR get_offices IS
  3.                       SELECT * FROM OFFICES;
  4. BEGIN
  5.                    DBMS_OUTPUT.enable;
  6.                     FOR v_gt IN get_offices LOOP
  7.                       DBMS_OUTPUT.put_line('Get Data: '||TO_CHAR(v_gt.OFFICE)||' '||v_gt.CITY||' '
  8.                                       ||v_gt.REGION||' '||TO_CHAR(v_gt.MGR)||' '||TO_CHAR(v_gt.TARGET)||'
  9. '||TO_CHAR(v_gt.SALES));
  10.                      END LOOP;
  11.  END; 

21.01.2016; 19:33
хиты: 292
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь