Вызов хранимой процедуры с параметрами по умолчанию

Обсуждение возникших проблем, предложений и ошибок SDAC компонентов
Ответить
mihkod
Сообщения: 2
Зарегистрирован: Ср 24 фев 2016 12:25

Вызов хранимой процедуры с параметрами по умолчанию

Сообщение mihkod » Ср 24 фев 2016 20:39

Прошу помочь с таким вопросом:
есть база с хранимыми процедурами. У некоторых хранимых процедур есть по несколько параметров со значениями по умолчанию. Например:

procedure MyProc
@param1 int = 0,
@param2 int = -1,
@param3 varchar(50) = ""
AS

...
return 0

GO;

Есть программа на делфи 7 в которой для вызова хранимых процедур используются компоненты TMSConnection TMSStoredProc. При вызове хранимой процедуры программа передает не все параметры, например только @param1, для примера выше (предполагается что остальные параметры будут иметь значения по умолчанию). Но когда хранимая процедура выполняется, в не незаданных параметрах оказываются значения null (вместо дефолтных). Можно ли настроить компоненты чтобы работало как мне надо ?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Вызов хранимой процедуры с параметрами по умолчанию

Сообщение AndreyZ » Чт 25 фев 2016 09:35

Чтобы при вызове хранимой процедуры параметру передавалось не null значение, а default, установите свойство TParam.Bound этому параметру в False. Например, это можно делать в цикле:

Код: Выделить всё

  MSStoredProc.StoredProcName := 'MyProc';
  MSStoredProc.ParamByName('param1').Value := Value;

  for i := 0 to MSStoredProc.ParamCount - 1 do
    if MSStoredProc.Params[i].IsNull then
      MSStoredProc.Params[i].Bound := False;

  MSStoredProc.ExecProc;

mihkod
Сообщения: 2
Зарегистрирован: Ср 24 фев 2016 12:25

Re: Вызов хранимой процедуры с параметрами по умолчанию

Сообщение mihkod » Чт 25 фев 2016 16:05

спасибо! кажется то что надо

Ответить