2014-01-30 6 views
3

Я пытаюсь понять цель использования запросов курсора (select ..). Например, я получил это из документа оракула. Я могу просто присоединиться к сотрудникам с таблицей департаментов. В чем дело с курсором?Какова цель запроса курсора orcacle (select ..) в Oracle?

SELECT department_name, CURSOR(SELECT salary, commission_pct 
    FROM employees e 
    WHERE e.department_id = d.department_id) 
    FROM departments d 
    ORDER BY department_name; 
+2

Этот запрос запрашивает имя отдела и ссылку курсора на процент зарплаты и процента всех сотрудников этого отдела. Join дает вам несколько строк в таблице разделов, соответствующих соответствующему счету сотрудника. И есть интересная дискуссия [здесь] (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7866466844558) –

+0

Нам нужно получить запрос в ограниченных наборах , Если сделано в более крупной партии, мы MAX из возможных открытых курсоров. Когда открываются в наборах 50, 50 курсоров открываются и закрываются после извлечения.! Основное отличие от обычного запроса заключается в том, что t возвращает несколько столбцов/строк в обычном запросе (скалярном), что возможно с помощью выражений CURSOR! –

ответ

6

CURSOR выражение является редко используемой функцией, которая позволит вам передавать наборы данных процедуры PL/SQL.

Это позволяет использовать расширенные функции, такие как объединение параллельных конвейерных функций. Это дает возможность быстро обрабатывать несколько этапов процедурного кода. См. Пример PL/SQL Language Reference.

Это интересная функция, но использование выражений CURSOR часто является большой ошибкой. Это означает, что большая часть вашей обработки будет выполнена в PL/SQL вместо SQL. PL/SQL отлично подходит для управления SQL, но обычно это не то место, где вы хотите сделать тяжелый подъем.

Я только видел CURSOR выражение, используемое по двум причинам:

  1. Разработчикам не знали о промежуточных или дополнительных функциях SQL, таких как аналитические функции, модель и т.д.
  2. Построение правил предприятия двигателя.
+0

@MaheswaranRavisankar Спасибо, я изменю свое сообщение, чтобы уточнить, что я всегда говорю о выражениях CURSOR, а не о всех типах курсоров. –

Смежные вопросы