Übergeben von SQL server gespeicherten Prozedurparameternamen über Delphi

Ich bin neu in Delphi und versuche, meinen path zu finden, um einige gespeicherte Prozeduren in SQL server aufzurufen.

Dies ist der Code, mit dem ich im Moment gearbeitet habe und es funktioniert ….

FConnection := TADOConnection.Create(nil); FMetaDataSP := TADOStoredProc.Create(nil); LoadDBSettings; FMetaDataSP.Connection := FConnection; FMetaDataSP.ProcedureName := 'Messaging.ListMessageSections'; FMetaDataSP.Parameters.CreateParameter('@ReferralID', ftInteger, pdInput, 4, null); FMetaDataSP.Parameters.CreateParameter('@ConsumerID', ftInteger, pdInput, 4, null); Dataset := FMetaDataSP; FMetaDataSP.Parameters.ParamByName('@ReferralID').Value := ReferralID; FMetaDataSP.Parameters.ParamByName('@ConsumerID').Value := ConsumerID; 

…. aber wenn ich ein Profil in SQL server Ich sehe, das ist die SQL, die ausgeführt wird.

 exec Messaging.ListMessageSections 1,1 

Was ich will, ist das …

 exec Messaging.ListMessageSections @ReferralID=1, @ConsumerID=1 

so dass die Reihenfolge der Parameter in der Codebasis nicht wichtig ist.

Ist das möglich?

Sie können tun, was Sie wollen, wenn Sie TADOQuery anstelle von TADOStoredProc verwenden.

 FMetaDataSP := TADOQuery.Create(nil); FMetaDataSP.Connection := FConnection; FMetaDataSP.SQL.Text := 'Messaging.ListMessageSections @ReferralID=:ReferralID, @ConsumerID=:ConsumerID'; FMetaDataSP.Parameters.ParamByName('ReferralID').Value := ReferralID; FMetaDataSP.Parameters.ParamByName('ConsumerID').Value := ConsumerID; FMetaDataSP.ExecSQL;