Sql. Чем курсоры отличаются от представлений

Forums:

Для чего нужны курсоры? Правильно ли я понимаю, что в sql, курсор - это ссылка на результат выполнения запроса?

Если да, то чем он отличается от представления, ведь применяются они для многократного использования полученного результата

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Правильно ли я понимаю, что в sql, курсор - это ссылка на результат выполнения запроса?

Можно цитату - где именно вы читаете про курсоры, чтобы было понятен контекст.

_____________
матфак вгу и остальная классика =)

farberling_ti's picture

Читаю сейчас книгу Бена Форта "Освой SQL самостоятельно", Урок21-Курсоры. Ниже - пример создания курсора из книги:

DECLARE CustCursor CURSOR
FOR
SELECT * FROM Customers
WHERE cust_email IS NULL;

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

CREATE VIEW CustView AS
SELECT * FROM Customers
WHERE cust_email IS NULL;

+ Хотелось бы узнать сценарии использования курсоров.

vedro-compota's picture

  1. с VIEW работают в основном "как с таблицей", напр, можно ограничивать права доступа. Можно сказать что представления, это таблицы, собираемые "на лету".
  2. курсоры же (если говорить о mysql) используются для хранимых процедур, т.е. можно сказать, что курсоры это более специальные и частные объекты доступа к данным.
  3. К представлению можно выполнить запрос как к таблице:
    SELECT subject, param FROM my_view WHERE param>1000;
    
    

_____________
матфак вгу и остальная классика =)