Delphi动态创建的ADOStoredProcedure参数

时间:2018-07-19 09:45:37

标签: delphi ado

我在这里执行多线程,因此我需要为每个线程动态创建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抱怨缺少其他参数。仅当我动态创建时才发生这种情况。通过拖放组件,它不会。

问题:是否可以自动填充所有参数并将它们设置为null(我以为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'。我还有其他东西吗?我先尝试了True,然后再准备Refresh,也尝试了Refresh,然后是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;

1 个答案:

答案 0 :(得分:0)

解决方法是:

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;