sql-server - 将参数传递给 TADOStoredProc 的更好方法 (Delphi)

标签 sql-server delphi stored-procedures ado

我需要将大量的 SQL 查询转换为存储过程。我有一些代码可以在一个 Delphi 过程中一次更新大约 20 或 30 个值。我可以创建一个存储过程来完成这样的事情。问题是我将参数传递给存储过程的方法非常庞大,如下所示:

    with stored_procedure do......
    Param := Parameters.AddParameter;
    Param.Name := '@SSN';
    Param.Value := edtSSN.text;

    Param := Parameters.AddParameter;
    Param.Name := '@FirstName';
    Param.Value := edtFirstName.Text;

    Param := Parameters.AddParameter;
    Param.Name := '@LastName';
    Param.Value := edtLastName.Text;

    Param := Parameters.AddParameter;
    Param.Name := '@UserRID';
    Param.Value:= GetRIDFromCombo(cbUser);

我也不确定这是否会导致内存泄漏(是否有必要释放此类 TParameter 对象?)

有人有更好的方法来处理大量参数吗? (我不能使用新库。我必须使用 ADO,并且我使用的 SQL 是 MSSQL)(另外,我不使用 ADO.net)

最佳答案

有一个公认的答案:-),但我想向您指出一种更简单、更容易的方法来用一行定义和使用参数:

stored_procedure.Parameters.CreateParameter('SSN',ftString,pdInput,30,edtSSN.text);

它简单而灵活,因为您可以用同一行定义输入和输出参数。

以及来自 Delphi 的帮助:

function CreateParameter(const Name: WideString; DataType: TDataType;
    Direction: TParameterDirection; Size: Integer; 
    Value: OleVariant): TParameter;

关于sql-server - 将参数传递给 TADOStoredProc 的更好方法 (Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159489/

相关文章:

sql-server - 在 SQL Server 中创建索引的最佳实践和反模式?

sql-server - ColdFusion 10 serializeJSON 将是/否字符串转换为 bool 值 - 如何阻止它?

MySQL存储过程导致错误

oracle - 如果使用 Oracle 数据库,Delphi 应用程序从 BDE 迁移的选项有哪些

sql-server - 我们的 SQL Server 存储过程 "dies"- 但我怎样才能找到原因呢?

oracle - 从 ADO.NET 调用存储过程时,不能将类型为 NVarChar 的 OracleParameter 与输出的 ParameterDirection 一起使用

mysql - select 语句返回一部分结果

sql - 使用 RANK OVER PARTITION 比较前一行结果

delphi - 线程内的消息循环

delphi - 对 Windows Vista 和 Windows 7 中的 DPI 虚拟化和 DPI 感知应用程序进行故障排除