2010-06-21 12 views
2

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?

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;