Передача имен параметров хранимых процедур SQL Server через Delphi - PullRequest
2 голосов
/ 25 октября 2011

Я новичок в Delphi и пытаюсь найти способ вызова некоторых хранимых процедур в SQL Server.

Это код, с которым я работал в данный момент, и он работает ....

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;

.... но когда я делаю профиль в SQL Server, я вижу, что это SQL, который выполняется.

exec Messaging.ListMessageSections 1,1

То, что я хочу, это вместо этого ...

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

, поэтому порядок параметров в кодовой базе не важен.

Возможно ли это?

1 Ответ

2 голосов
/ 26 октября 2011

Вы можете делать что хотите, если используете TADOQuery вместо 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...