我正在使用Delphi 10.1 Berlin,我需要在我的项目中使用TAdoStoredProc。我不在表单或数据模块中使用任何非可视组件。我的所有连接和数据库组件都是在运行时创建的。
我的问题:当我尝试执行TAdoStoredProc时,它执行两次,我的插入,更新过程已经工作了两次。
var
mSp: TADOStoredProc;
i: Integer;
begin
mSp := TADOStoredProc.Create(nil);
mSp.Connection := conn;
mSp.ProcedureName := spname;
mSp.CommandTimeout := 600;
mSp.parameters.Refresh;
for i := 0 to parameters.Count - 1 do
begin
mSp.parameters.ParamByName(parameters[i].Name).Value := parameters[i].Value;
end;
mSp.ExecProc;
mSp.Open;
Result := mSp;
我该怎么做或改变?感谢。
答案 0 :(得分:4)
我发现你的代码需要一些返回值。因此,您应该使用 TAdoStoredProc
,例如 TAdoQuery
。您无需使用ExecProc
函数执行,只尝试使用Open
函数。
您可以查看TADOStoredProc.ExecProc方法documentation from here。
如果应用程序仅对存储过程返回的结果集感兴趣,为TADOStoredProc组件调用Open方法或将其Active属性设置为true。