Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

OR a.id=b.author2




WHERE a.id = b.author1

FROM authors a

OPEN...FOR

OPEN имя_куросра FOR select_команда;

 

Курсорные подзапросы. Курсорные подзапросы также называют вложенными курсорными выражениями, так как они используют курсорное выражение внутри оператора SELECT языка SQL. Другими словами, это курсоры, используемые как выражение для столбца в списке выбора для явного курсора. Они могут использоваться со всеми определенными ранее типами курсоров, за исключением неявных. Возвращаемое значение всегда имеет тип REF CURSOR.

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

- вложенный курсор явно закрывается программой.

- закрывается родительский курсор.

- заново выполняется родительский курсор.

- во время извлечений родительской строки порождается исключение.

 

CURSOR возвращает вложенный курсор из запроса и имеет следующий синтаксис:

 

CURSOR(подзапрос)

 

Рассмотрим пример, который использует курсорный подзапрос в явном курсоре:

 

SET SERVEROUTPUT ON

DECLARE

cv_author SYS_REFCURSOR;

v_title BOOKS.TITLE%TYPE;

v_author AUTHORS.%ROWTYPE;

v_counter PLS_INTEGER:= 0;

CURSOR book_cur

IS

SELECT b.title

CURSOR (SELECT *

OR a.id=b.author3)

FROM books b

WHERE isbn=‘78824389’;

BEGIN

OPEN book_cur;

LOOP

FETCH book_cur INTO v_title, cv_author;

EXIT WHEN book_cur%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(‘Title from the main cursor: ‘||v_title);

LOOP

FETCH cv_author INTO v_author;

EXIT WHEN cv_author%NOTFOUND;

 

v_counter:=v_counter + 1;

DMBS_OUTPUT.PUT_LINE(‘Author’ ||v_counter|| ‘:’

||v_author.first_name|| ‘ ‘

||v_author.last_name);

END LOOP;

END LOOP;

CLOSE book_cur;

END;

/

 




Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 231; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.