Особенности использования курсора
-
Предложение
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, используемой в операторе |