Вызов SQL Server хранимых процедур из Delphi с аргументами? - PullRequest
2 голосов
/ 21 июня 2010

Я пытаюсь вызвать SP_SPACEUSED из Delphi 2010 с помощью ADO.Я могу вызвать его без аргументов, используя TSQLStoredProc и установив StoredProcNameЭто дает мне размер базы данных.Теперь мне нужен определенный размер таблицы, и SP_SPACEUSED использует один аргумент @objname.Как мне передать это в качестве аргумента.Я попытался передать это в качестве параметра, но это не работает.Это параметр?Могу ли я сделать это из Delphi?

1 Ответ

3 голосов
/ 21 июня 2010

Быстрый и грязный пример (в D6, но он должен работать без изменений в 2010 году):

var
  I: Integer;
  adStoredProc : TADOStoredProc;
begin
  adStoredProc := TADOStoredProc.Create(nil);
  try
    adStoredProc.Connection := ADOConnection1;
    adStoredProc.ProcedureName := 'SP_SPACEUSED';
    adStoredProc.Parameters.Refresh;
    for I := 0 to adStoredProc.Parameters.Count - 1 do    // Iterate
    begin
      if Sametext(adStoredProc.Parameters[i].Name,'@objname') then
        adStoredProc.Parameters[i].Value := 't_config';
    end;    // for
    adStoredProc.Open;
    for I := 0 to adStoredProc.FieldCount - 1 do    // Iterate
    begin
      memo1.Lines.Append(format('%s : %s', [adStoredProc.Fields[i].Fieldname, adStoredProc.Fields[i].AsString]));
    end;    // for
  finally
    FreeAndNil(adStoredProc);
  end;
end;
...