Дата публикации: 05.01.2003

Работа с IN и OUT параметрами в хранимых процедурах

Процедура get_heapid имеет один IN и один OUT параметр. Обратите внимание на adParamInput и adParamOutput.

function TPxBank.GetID(strHeap:WideString; out id: integer): HResult;
var
  cmd: _Command;
  ra: OleVariant;
begin
  Result := S_Ok;
  try
    cmd := CoCommand.Create;
    cmd.Set_ActiveConnection(GetConnection);
    cmd.CommandText := 'execute procedure get_heapid(?)';

    cmd.Parameters.Append(cmd.CreateParameter('heap', adVarChar, adParamInput, length(strHeap), strHeap));
    cmd.Parameters.Append(cmd.CreateParameter('id', adInteger, adParamOutput, -1, 0));
    cmd.Execute(ra, EmptyParam, 0);
    id := cmd.Parameters.Item['ID'].Value;
    SetComplete;
  except
    on E: Exception do begin
      Result := E_FAIL;
      SetAbort;
      raise;
    end;
  end;
end;