1. @@CURSOR_ROWS – возвращает количество строк, содержащихся в последнем открытом в текущем соединении курсоре. Может вернуть такие значения:
· некоторое отрицательное число. Показывает, что этот курсор наполняется данными асинхронно. Может иметь место для больших KEYSET или STATIC курсоров.
· -1. Возвращается для динамического курсора (DYNAMIC). Т.к. этот курсор отображает все изменения в исходных данных, то количество содержащихся в нем строк неизвестно.
· 0. Курсор еще не открыт, уже закрыт или ни одна строка для него не выбрана.
· Некоторое положительное число. Количество строк, извлеченных в курсор.
2. CURSOR_STATUS({{‘local’ | ‘global’}, ‘имя курсора’ | ‘variable’, ‘@cursor_var’}) – возвращает состояние курсора. Имеет 2 строковых аргумента: 1-ый имеет значение ‘local’ или ‘global’ для курсоров, заданных именем (2-ой параметр) или ‘variable’ – для курсоров заданных переменной (2-ой параметр). Может возвращать следующие значения:
· 1. Показывает, что этот курсор открыт и имеет хотя бы 1 строку (для DYNAMIC курсоров 0 или более строк).
· 0. Курсор открыт, но не содержит строк. Это значение не может быть возвращено для DYNAMIC курсоров.
· -1. Курсор закрыт.
· -2. Может быть возвращено, если курсор задан переменной. Означает, что курсор не связан с переменной.
· -3. Такого курсора или переменной не существует или переменная существует, но не связана с курсором.
3. @@FETCH_STATUS – возвращает результат выполнения последней команды FETCH (целое число):
· 0. Команда FETCH выполнена успешно.
· -1. Команда FETCH не могла быть выполнена успешно или заданная строка выходит за границы имеющегося множества строк.
· -2. Извлекаемая строка отсутствует.
Примеры использования курсоров.
Все примеры работы с курсорами будут построены с использованием таблицы table1, которая создана следующим образом: