Базы данных Oracle - статьи

         

Ссылки на курсор в предложении SELECT


Ссылки на курсор могут использоваться не только в программе, но и в предложении SQL. Это обеспечивается указанием во фразе SELECT предложения SELECT выражения CURSOR для формирования столбца результата. Если мы попытаемся сделать это в SQL*Plus, результат покажется довольно неожиданым: SQL SELECT 2 dname 3 , CURSOR ( SELECT ename FROM emp WHERE emp.deptno = dept.deptno )

4 FROM dept; DNAME CURSOR(SELECTENAMEFR -------------- -------------------- ACCOUNTING CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 ENAME

---------- CLARK

KING

MILLER

RESEARCH CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 ENAME ---------- SMITH

JONES

SCOTT

ADAMS

FORD

SALES CURSOR STATEMENT : 2 ... ... ... ...

На деле произошло вот что: предложение SELECT ... FROM dept вернуло во втором столбце результата каждой своей строки ссылку на курсор, сформированный динамически предложением внутри CURSOR ( ... ). Программа SQL*Plus проинтерпретировала эту ссылку, перебрав строки, словно как это делали мы в примерах предыдущей статьи, и выдала строки на экран. В результате мы увидели на экране перечень четырех строк-отделов, и для каждого отдела – перечень сотрудников.

Форма выдачи занятная, но, кажется, практически бесполезная. Так зачем же нужно выражение CURSOR в предложении SELECT ? Чтобы ответить на этот вопрос, снова обратимся к программированию.



Содержание раздела