【发布时间】:2011-10-25 01:50:15
【问题描述】:
我是 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
因此代码库中参数的顺序并不重要。
这可能吗?
【问题讨论】:
-
不是真的,.. 至少不是从我坐的地方...如果我使用 Parameters.Refresh 方法,我会得到“exec Messaging.ListMessageSections 1,default,1”作为对 SQL 的调用不是参数的命名版本。当然,这可能是 Delphi 不做的事情。我知道 .Net 可以,但 Delphi 对我来说是新的。
标签: sql-server delphi stored-procedures parameters