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;
我在这里做多线程,所以我需要为每个线程动态创建 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;