我创建了一个存储过程,是用来查询一个表。存储过程创建没有任何问题,但是查询的结果有多条记录,我要一一取得这些记录的一些字段的值。如何处理。我是用delphi中的StoredProc控件来完成的,storedproc能不能像query一样进行循环,就如:
while not storedproc.eof do
begin
edit1.text:=storedproc.parambyname('..').asstring;
edit2.text:=storedproc.parambyname('..').asstring;
.....
storedproc.next;
end;
如果不行,如何处理!!!
while not storedproc.eof do
begin
edit1.text:=storedproc.parambyname('..').asstring;
edit2.text:=storedproc.parambyname('..').asstring;
.....
storedproc.next;
end;
如果不行,如何处理!!!
老是报错:"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)
)
帮你UP
select CALPRICE_INCOME
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
这个数据集可能有多条记录,如何能赋给一(组)变量?