Обработка результатов выполнения
Для получения результатов выполнения хранимой процедуры выполнить функцию LINTER_GetCursorOption
со следующими параметрами:
-
тип характеристики –
cProcArgDesc
; -
буфер ответа – адрес структуры ARGPROC_OUT;
-
номер параметра хранимой процедуры (
Column number
) должен быть равен 0 («результат хранимой процедуры»).
Проверить код завершения функции LINTER_GetCursorOption
:
-
если функция завершилась успешно, то структура ARGPROC_OUT содержит описание результата;
-
если функция завершилась с кодом
LINAPI_ERROR
(не успешно), то это означает, что процедура закончилась с исключением. При этом код завершения ядра СУБД ЛИНТЕР равен 7201 («Процедура завершилась с исключением»), а системный код завершения – номер сгенерированного процедурой исключения; -
в случае отрицательных значений номеров исключений, меньших -13, исключение является пользовательским (CUSTOM) с номером на 1 больше, чем значение системного кода *-1 (например, в случае пользовательского исключения 2005 возвращаемое значение номера исключения будет -2004).
Установка бита fNULL
в флагах описания результата (поле Flags
) означает возврат NULL-значения.
Если установлен бит fCursor
флагов дескриптора результата, то результат является курсором.
Получить результат выполнения хранимой процедуры и возвращаемые ею параметры, можно также с помощью функции LINTER_GetData
. В случае если результатом выполнения процедуры является курсор, LINTER_GetData
возвращает идентификатор курсора, соответствующего результату.
Этот идентификатор может быть использован для выполнения LINTER_Fetch
, LINTER_GetData
, LINTER_GetRowBuffer
и т. п.