Особенности использования курсора
-
Предложение
FOR UPDATEразрешено использовать в оператореSELECT, но оно не требуется для успешного выполнения позиционированного обновления или удаления; -
Удостоверьтесь, что объявленные имена курсоров не совпадают, ни с какими именами, определёнными позже в предложениях
AS CURSOR; -
Если курсор требуется только для прохода по результирующему набору данных, то практически всегда проще (и менее подвержено ошибкам) использовать оператор FOR
SELECTс предложениемAS CURSOR. Объявленные курсоры должны быть явно открыты, использованы для выборки данных и закрыты. Кроме того, вы должны проверить контекстную переменнуюROW_COUNTпосле каждой выборки и выйти из цикла, если её значение ноль. ПредложениеFOR SELECTделает эту проверку автоматически. Однако объявленные курсоры дают большие возможности для контроля над последовательными событиями и позволяют управлять несколькими курсорами параллельно; -
Оператор
SELECTможет содержать параметры, например: "SELECT NAME || :SFX FROM NAMES WHERE NUMBER = :NUM". Каждый параметр должен быть заранее объявлен как переменная PSQL (это касается также входных и выходных параметров). При открытии курсора параметру присваивается текущее значение переменной; -
Если опция прокрутки опущена, то по умолчанию принимается NO SCROLL (т.е курсор открыт для движения только вперёд). Это означает, что могут быть использованы только команды
FETCH [NEXT FROM]. Другие команды будут возвращать ошибки.
|
Warning
|
Если значение переменной PSQL, используемой в операторе |