我正在尝试使用ADO从Delphi 2010调用SP_SPACEUSED。我可以使用TSQLStoredProc并设置StoredProcName来不带参数地调用它。这给了我数据库的大小。我现在需要一个特定的表大小,并且SP_SPACEUSED采用一个参数@objname。如何将其作为参数传递。我尝试将其作为参数传递,但这不起作用。是参数吗?我可以在Delphi中做到吗?
最佳答案
快速而肮脏的示例(在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;