Link Search Menu Expand Document

РезультатВызоваПроцедурыSql

Стд::БазаДанных::Sql::РезультатВызоваПроцедурыSql
Базовые типы: Закрываемое, Объект

Иерархия типа

graph BT;
РезультатВызоваПроцедурыSql-->Закрываемое;
Закрываемое-->Объект;

Результат выполнения запроса, вызывающего процедуру.

Сравнение ссылочное


Примеры

Пример вызова хранимой процедуры в MS SQL. В примере вызывается хранимая процедура с сигнатурой dbo.insert_or_update_doc(@id uniqueidentifier, @content varchar(50), @res bit OUT). Процедура вставляет новую запись в таблицу, если в ней нет записи с ключом, равным параметру @id. Если запись есть, то происходит обновление поля значением параметра @content. В параметре @res возвращается значение Истина, если запись обновлена.

метод СоздатьИлиОбновить(Соединение: СоединениеSql, Ид: Строка, Содержание: Строка): Булево
    пер Вызов = Соединение.СоздатьЗапросВызовПроцедуры("EXEC dbo.insert_or_update_doc &Ид, &Содержание, &Обновлено;")
    Вызов.УстановитьЗначениеПараметра("Ид", Ид)
    Вызов.УстановитьЗначениеПараметра("Содержание", Содержание)
    Вызов.УстановитьТипВыходногоПараметра("Обновлено", ТипДанныхSql.Boolean)
    исп Рез = Вызов.Выполнить()
    возврат Рез.Получить("Обновлено") как Булево)
;

В примере вызывается анонимный блок Oracle, из которого в свою очередь вызывается функция с сигнатурой esb.echo(input INT, output OUT INT, input_output IN OUT INT) RETURN INT.

структура ЗаписьВызова
    пер Результат = -1
    пер Входной = -1
    пер Выходной = -1
    пер ВходнойВыходной = -1
;

метод ВызовБлока(Соединение: СоединениеSql): ЗаписьВызова
    пер Запрос =
        "BEGIN
            &Результат := esb.echo(&Входной, &Выходной, &ВходнойВыходной);
        END;"
    пер Вызов = Соединение.СоздатьЗапросВызовПроцедуры(Запрос)
    Вызов.УстановитьТипВыходногоПараметра("Результат", ТипДанныхSql.Integer)
    Вызов.УстановитьЗначениеПараметра("Входной", 2)
    Вызов.УстановитьТипВыходногоПараметра("Выходной", ТипДанныхSql.Integer)
    Вызов.УстановитьЗначениеВыходногоПараметра("ВходнойВыходной", 100, ТипДанныхSql.Integer)

    исп Рез = Вызов.Выполнить()
    
    возврат новый ЗаписьВызова(Рез.Результат как Число,
            Рез.Получить("Входной") как Число,
            Рез["Выходной"] как Число,
            Рез.ВходнойВыходной как Число)
;

Методы

Закрыть

Закрыть()

Закрывает результат выполнения запроса и освобождает связанные с ним ресурсы.


КакСоответствие

КакСоответствие(): Соответствие<Строка, Объект>

Возвращает соответствие, в котором ключ - имя параметра, а значение - значение параметра.


Получить

Получить(Имя: Строка): Объект

Возвращает значение параметра запроса c указанным именем. Если нет параметра с указанным именем, выбрасывается исключение ИсключениеНедопустимыйАргумент. Для входных параметров возвращается заданное при вызове значение. Для выходных параметров - установленное процедурой.


Список унаследованных методов

Объект