使用参数从Delphi调用SQL Server存储过程?

时间:2010-06-21 09:05:47

标签: sql-server delphi ado

我正在尝试使用ADO从Delphi 2010调用SP_SPACEUSED。我可以通过使用TSQLStoredProc并设置StoredProcName来无争议地调用它。这给了我数据库大小。我现在需要一个特定的表大小,SP_SPACEUSED需要一个单独的arugument,@ objname。我如何将其作为参数传递。我已经尝试将其作为参数传递,但这不起作用。这是一个参数吗?我可以用Delphi做到这一点吗?

1 个答案:

答案 0 :(得分:3)

快速而肮脏的例子(在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;