Запись на основе курсора против сильного реф курсора - PullRequest
0 голосов
/ 29 декабря 2018

Я новичок в базах данных Oracle и языке pl / sql.Мой вопрос заключается в том, в чем разница между курсором сильной ссылки и записью на основе курсора - например, переменная «var_exmpl», которая будет хранить значения курсора, т.е. «cur_exmpl% rowtype»

1 Ответ

0 голосов
/ 29 декабря 2018

Вы используете типы курсора ref для объявления переменных курсора.Затем вы можете извлечь из этих переменных курсора, как если бы вы указали явный курсор.В обоих случаях вы можете и обычно загружать записи.

С помощью явного курсора вы можете объявить запись на основе курсора.При использовании сильного типа курсора ref я объявил бы запись, основанную на том же типе, который использовался для объявления курсора ref.

Вот несколько примеров:

DECLARE
   TYPE employee_rt IS RECORD
   (
      employee_id   employees.employee_id%TYPE,
      salary        employees.salary%TYPE
   );

   TYPE strong_rc IS REF CURSOR
      RETURN employee_rt;

   strong_rec              employee_rt;

   CURSOR twocols_cur
   IS
      SELECT employee_id, salary FROM employees;

   rec_from_explicit_cur   twocols_cur%ROWTYPE;
BEGIN
   OPEN strong_rc FOR SELECT employee_id, salary FROM employees;

   FETCH strong_rc INTO strong_rec;

   CLOSE strong_rc;

   OPEN twocols_cur;

   FETCH twocols_cur INTO rec_from_explicit_cur;

   CLOSE twocols_cur;
END;
/
...