我创建了一个存储过程,是用来查询一个表。存储过程创建没有任何问题,但是查询的结果有多条记录,我要一一取得这些记录的一些字段的值。如何处理。我是用delphi中的StoredProc控件来完成的,storedproc能不能像query一样进行循环,就如:
while not storedproc.eof do
begin
edit1.text:=storedproc.parambyname('..').asstring;
edit2.text:=storedproc.parambyname('..').asstring;
.....
storedproc.next;
end;
如果不行,如何处理!!!

解决方案 »

  1.   

    to dyxfkj
    老是报错:"at end of table"
    我的存储过程创建如下:
    create or replace procedure CALPRICE_INCOME
    (ISTARTDATE IN VARCHAR2,
    IENDDATE IN VARCHAR2,
    IGROUPNAME OUT VARCHAR2,
    ISEAT OUT VARCHAR2,
    IBED OUT VARCHAR2,
    IBED_DATE OUT VARCHAR2,
    ICOST OUT VARCHAR2,
    IPAPER OUT VARCHAR2,
    IPACKAGE1 OUT VARCHAR) IS
    begin
    SELECT groupname,
           SUM(p_seat + p_fast + p_air) seat,
           SUM(p_bed) bed,
           SUM(p_bed_date) bed_date, 
           SUM(p_cost) cost,
           SUM(p_paper) paper,
           SUM(p_package) package1
    into  IGROUPNAME,
      ISEAT,
      IBED,
      IBED_DATE,
      ICOST,
      IPAPER,
      IPACKAGE1
     FROM income
     WHERE jbdate >= istartdate AND jbdate <= ienddate
     GROUP BY groupname
     ORDER BY groupname; 
     end CALPRICE_INCOME; 
    数据库结构:
    CREATE TABLE SYSDBA.INCOME (
      GROUPNAME VARCHAR2(10) NOT NULL,
      JBDATE VARCHAR2(10) NOT NULL,
      STARTTRAINCODE VARCHAR2(10) NOT NULL,
      START_STATION VARCHAR2(10),
      STOP_STATION VARCHAR2(10),
      P_SEAT NUMBER(*, 0),
      P_FAST NUMBER(*, 0),
      P_AIR NUMBER(*, 0),
      P_BED NUMBER(*, 0),
      P_BED_DATE NUMBER(*, 0),
      P_COST NUMBER(*, 0),
      P_WAIT_AIR NUMBER(*, 0),
      P_PAPER NUMBER(*, 0),
      P_PACKAGE NUMBER(*, 0),
      FLAG VARCHAR2(2)
    )
      

  2.   

    应该在delphi的一个循环里调用sp
      

  3.   

    Oracle 不懂。
    帮你UP
      

  4.   

    返回数据集的存储过程可以试试这样:
    select CALPRICE_INCOME
      

  5.   

    你在store procedure 用cursor(游标)来实现!
      

  6.   

    Procdure返回数据集时最好是使用自定义的Cursor类型返回.
      

  7.   

    考虑过吗?
    SELECT 
           SUM(p_seat + p_fast + p_air) seat,
           SUM(p_bed) bed,
           SUM(p_bed_date) bed_date, 
           SUM(p_cost) cost,
           SUM(p_paper) paper,
           SUM(p_package) package1
     FROM income
     WHERE jbdate >= istartdate AND jbdate <= ienddate
    这个数据集可能有多条记录,如何能赋给一(组)变量?
      

  8.   

    是啊,上面说的是,编译就通不过的,我建议你,把结过使用临时表,调用storepro把结过方入临时表,然后访问零时表