Delphi 动态创建的 ADOStoredProcedure 参数

Delphi Dynamically created ADOStoredProcedure Parameters

我在这里做多线程,所以我需要为每个线程动态创建 ADOStoredProcedures(除其他外)

spBW_AUFTR_KOPF := TADOStoredProc.Create(nil);
spBW_AUFTR_KOPF.Connection:=MSSQL;
spBW_AUFTR_KOPF.ProcedureName:='spBW_AUFTR_KOPF;1';
spBW_AUFTR_KOPF.Parameters.Refresh;

这就是我动态创建过程的方式。然后我只想删除一些东西,只需要3个参数。

spBW_AUFTR_KOPF.Parameters.ParamValues['@OP']:='DEL';
spBW_AUFTR_KOPF.Parameters.ParamValues['@AB']:=DELETE_ARRAY[i].AB;
spBW_AUFTR_KOPF.Parameters.ParamValues['@DB_YEAR']:=DELETE_ARRAY[i].DB_YEAR;
spBW_AUFTR_KOPF.ExecProc;

问题是因为过程(在 MSSQL 中)有 ca。 30 个参数,Delphi 抱怨其他参数丢失。这只有在我动态创建时才会发生。通过拖放组件它不会。

问题: 是否可以自动填充所有参数并将它们设置为空(我认为 TADOStoredProcedure.Parameters.Refresh 可以...但是不行)

谢谢

更新

spBW_AUFTR_KOPF := TADOStoredProc.Create(nil);
spBW_AUFTR_KOPF.Connection:=MSSQL;
spBW_AUFTR_KOPF.ProcedureName:='spBW_AUFTR_KOPF;1';
spBW_AUFTR_KOPF.Prepared:=true;
spBW_AUFTR_KOPF.Parameters.Refresh;

没有帮助: [NEW] BW_AUFTR_KOPF 过程或函数 'spBW_AUFTR_KOPF' 需要未提供的参数“@ID”。我还缺少其他东西吗?我先试了 prepared True 然后 Refresh ,我也试了先 Refresh 再试 prepared true .

更新 2

好吧,按照建议固定为:

spBW_AUFTR_KOPF := TADOStoredProc.Create(nil);
spBW_AUFTR_KOPF.Connection:=MSSQL;
spBW_AUFTR_KOPF.ProcedureName:='spBW_AUFTR_KOPF;1';
spBW_AUFTR_KOPF.Parameters.Refresh;

          for i := 0 to spBW_AUFTR_KOPF.Parameters.Count-1 do
            spBW_AUFTR_KOPF.Parameters.Items[i].Value:=null;

解决方案是:

spBW_AUFTR_KOPF := TADOStoredProc.Create(nil);
spBW_AUFTR_KOPF.Connection:=MSSQL;
spBW_AUFTR_KOPF.ProcedureName:='spBW_AUFTR_KOPF;1';
spBW_AUFTR_KOPF.Parameters.Refresh;

          for i := 0 to spBW_AUFTR_KOPF.Parameters.Count-1 do
            spBW_AUFTR_KOPF.Parameters.Items[i].Value:=null;