【发布时间】:2013-11-22 05:39:53
【问题描述】:
我在我的项目中向客户添加了新的TClientDataset。我还有一个 Oracle 存储过程,它以 clientid 作为输入并返回游标。
下面的代码在按钮点击时执行
with dmMain.cdsGetV do //cdsGetV is name of Clientdataset
begin
if Active then Close;
Params.Clear;
FetchParams;
Params.ParamByName('PCLIENTID').AsString := '0022995544';
Open;
end;
点击时出现错误:`
cdsGetV:未找到参数“pclientid”。
还有许多其他类似的客户端数据集,它们运行良好。我复制了与那些 cd 完全相同的代码,但它仍然无法正常工作。知道有什么问题吗?
【问题讨论】:
-
要么您的 fetchparams 不返回参数,要么您的存储过程不返回一个称为 pclientid 的参数。比较一个有效的组合和一个无效的组合。您可能忽略了一些差异。
-
我尝试在 sql 块中执行过程。它工作正常。如何查看 FetchParams?
-
在 fetchparams 之后在 IDE 中检查 params.count、params[0].... 等
-
要保持独立于提供商,您可以尝试
Params.ParseSQL(Commandtext,true); Params.ParamByName('PCLIENTID').DataType := ftString;而不是FetchParams; -
param count=1,也就是只返回cursor,还必须有另一个输入参数pclientid。为什么会这样?
标签: delphi tclientdataset