Link Search Menu Expand Document

ЗапросSqlВызовПроцедуры

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

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

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

Предназначен для запросов, вызывающих хранимую процедуру или блок с out параметрами.

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


Примеры

Пример вызова хранимой процедуры в 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)

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

Методы

Выполнить

Выполнить запрос, который состоит из вызова хранимой процедуры или блока.

Перед выполнением запроса происходит конвертация значений, заданных через вызов УстановитьЗначениеПараметра.

При ошибках выполнения запроса выбрасывается исключение ИсключениеSql.

После выполнения можно получить значения параметров, отмеченных как выходной вызовом метода УстановитьЗначениеВыходногоПараметра или метода УстановитьТипВыходногоПараметра.

Запрос выполняется в собственной транзакции, которая автоматически фиксируется после успешного выполнения запроса или отменяется при ошибке. Если разработчик явно управляет транзакциями при помощи НачатьТранзакцию, то автоматические транзакции не начинаются. Разработчик может в запросе управлять транзакциями по своему усмотрению.


УстановитьЗначениеВыходногоПараметра

УстановитьЗначениеВыходногоПараметра(
  Имя: Строка,
  Значение: Объект,
  ТипДанных: ТипДанныхSql? = Неопределено)

Устанавливает признак того, что параметр выходной, и значение этого параметра. Значение параметра меняется при выполнении запроса. Новое значение доступно через Получить, как динамические свойства РезультатВызоваПроцедурыSql и через строковый индекс.

Имя - Имя параметра, при пустом значении выбрасывается исключение ИсключениеНедопустимыйАргумент ТипДанныхSql- Sql тип параметра Значение- Значение параметра.

Никаких проверок не выполняется:

  • можно установить значение параметра, которого нет в тексте запроса
  • можно повторно установить значение параметра (затерев тем самым предыдущее)
  • можно указать несовместимые ТипДанныхSql и Значение
  • можно указать несоответствующий тексту запроса ТипДанныхSql

УстановитьТипВыходногоПараметра

УстановитьТипВыходногоПараметра(
  Имя: Строка,
  ТипДанных: ТипДанныхSql?)

Устанавливает признак того, что параметр выходной, и определяет тип этого параметра. Значение параметра меняется при выполнении запроса. Новое значение доступно через Получить, как динамические свойства РезультатВызоваПроцедурыSql и через строковый индекс.

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

Никаких проверок не выполняется:

  • можно установить значение параметра, которого нет в тексте запроса
  • можно повторно установить значение параметра (затерев тем самым предыдущее)
  • можно указать несовместимые ТипДанныхSql и Значение
  • можно указать несоответствующий тексту запроса ТипДанныхSql

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

ЗапросSql

Объект

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

ЗапросSql