J'essaie d'appeler SP_SPACEUSED à partir de Delphi 2010 en utilisant ADO. Je peux l'appeler sans arguments en utilisant TSQLStoredProc, et en définissant le StoredProcName. Cela me donne la taille de la base de données. J'ai maintenant besoin d'une taille de table spécifique, et SP_SPACEUSED prend un seul arugument, @objname. Comment puis-je passer cela comme argument. J'ai essayé de passer cela en paramètre, mais cela ne fonctionne pas. Est-ce un paramètre? Puis-je le faire à partir de Delphi?L'appel de processeurs SQL Server stockés à partir de Delphi avec des arguments?
2
A
Répondre
3
exemple rapide et sale (en D6, mais il devrait fonctionner sans aucun changement en 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;