Reputation: 73
I'm new to Delphi and trying to find my way around calling some stored procedures in SQL Server.
This is the code I have been working with at the moment and it works....
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;
.... but when I do a profile in SQL Server I see this is the SQL that is executed.
exec Messaging.ListMessageSections 1,1
What I want is this instead...
exec Messaging.ListMessageSections @ReferralID=1, @ConsumerID=1
so that the ordering of the parameters in the code base are not important.
Is this possible?
Upvotes: 2
Views: 4636
Reputation: 1610
You can do what you want if you use TADOQuery instead of TADOStoredProc.
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;
Upvotes: 2