Обработка результатов выполнения

Для получения результатов выполнения хранимой процедуры выполнить функцию 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 и т. п.