我在oracle里写了一个functions目的是为了是想返回一个select数据集,以下是代码
CREATE OR REPLACE PACKAGE PKG_TEST
AS 
    TYPE REFCURSOR IS REF CURSOR; 
END PKG_TEST; 
create or replace function query_book return PKG_TEST.REFCURSOR is
  Result PKG_TEST.REFCURSOR;
begin
  open Result for 
       select * from test1;
       
  return(Result);
end query_book;我在PL/SQL里写select query_book from dual是可以运行的,但我在delphi 的adoquery这样执行却出错,在delphi里该如何调用这个functions呢?小弟在线等待,急...

解决方案 »

  1.   

      CmbLayer.Clear;
      mylstlot:= my_ADODB.create();
      mylstlot.ConnectDB(DBconnectstring.DMDBstr);
      setlength(procparameter,2);
      procparameter[0]:=lot.lot_id;
      procparameter[1]:=inttostr(lot.Current_wafer);
      ADOStoredProc1:=mylstlot.RunStoredProc('PKG_DM_CPutility.sp_get_defect_layer',procparameter);
      setlength(Defectarray,0);
      setlength(Defectarray,ADOStoredProc1.RecordCount);
      

  2.   

    TO taiguang
    能不能给个存储过程 返回数据集的简单例子,万分感谢
      

  3.   

    我现在就是想用delphi 的AdoQuery1+DataSource1+DBGridEh1 然后调用一个oracle的存储过程能够返回数据集能显示在DBGridEh1里!谁能给一个如何在oracle里建立返回数据集的存储过程,然后在delphi 里AdoQuery1+DataSource1+DBGridEh1 又如何调用的简单例子给我,小弟万分感谢!
      

  4.   

    create or replace procedure sp_getResult(rst out sys_refcursor) is
    begin
       open rst for select * from yourtablename;
    end;
    然后使用adoquery调用这个存储过程就可以了