我用的oracle数据库,做了一个存储过程,主要查询(查询结果肯定不是一条记录,而是一个数据集)
然后,我在delphi中用storedproc控件调用存储过程,
storedproc.active:=false;
storedproc.parambyname('..').asstring:=....;
........storedproc.execproc;(还是用open?);
如果是一条记录用execproc得到正确结果,没有问题。
但是如果结果是数据集,他提示:实际返回的行数超出请求行数....如果是数据集,可以像操作表一样来操作存储过程吗?
如:
while not storedproc.eof do
begin
  edit1.text:=storedproc.parambyname('..').asstring;
  ......
  storedproc.next;
end;
请教各位高手!!谢谢!

解决方案 »

  1.   

    我对oracle数据库不熟,但据我对VCL的理解,storedproc控件应该这样操作才算“合适”:1、需要返回数据集时,用Open方法。此时因为返回的时是一个结果集,应该能够数据的前向、后向操作。2、如不需要返回结果,或返回的不是数据集,而是简单类型数据,则用execproc方法。
      

  2.   

    我不是高手,但我做过,可以的。你就把存储过程当Query用吧。
      

  3.   

    Oracle8i以前的版本存储过程不能输出数据集,以后的版本,我还不太清楚、你的做法是对的,如果是Sql Server就没有问题
      

  4.   

    如果是sql server没有问题,多个数据集都可以!结果集要用OPEN打开,ORACLE不清楚!
      

  5.   

    : fengbincn
    sql server怎么输出结果集?
      

  6.   

    简单问题
    1/创建一个表
    2/存储过程执行时清空这个表
    3/把结果集放到这个表中
    4/delphi中调用这个表