我需要将大量的 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/