Страница 1 из 1

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

Добавлено: Ср 24 фев 2016 20:39
mihkod
Прошу помочь с таким вопросом:
есть база с хранимыми процедурами. У некоторых хранимых процедур есть по несколько параметров со значениями по умолчанию. Например:

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

...
return 0

GO;

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

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

Добавлено: Чт 25 фев 2016 09:35
AndreyZ
Чтобы при вызове хранимой процедуры параметру передавалось не 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;

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

Добавлено: Чт 25 фев 2016 16:05
mihkod
спасибо! кажется то что надо