CREATE OR REPLACE PACKAGE "PK_PAGINATION" is
type D_CUR is REF CURSOR;
PROCEDURE SP_PAGINATION(v_sql VARCHAR2,
v_pagesize INTEGER,
v_currpage INTEGER,
v_pagecount OUT INTEGER,
dRs OUT D_CUR);
end PK_PAGINATION;
--------------------实现-----------------------
CREATE OR REPLACE PACKAGE BODY "PK_PAGINATION" is
PROCEDURE SP_PAGINATION(v_sql VARCHAR2,
v_pagesize INTEGER,
v_currpage INTEGER,
v_pagecount OUT INTEGER,
dRs OUT D_CUR)
AS
sRs D_CUR;
--tRs sRs%ROWTYPE;<<<<<<<<<<<<<<<<<<<标号1>>>>>>>>>>>>>>>>>>>>
BEGIN
OPEN sRs FOR v_sql;
--dRs:=sRs;<<<<<<<<<<<<<<<<<<<标号2>>>>>>>>>>>>>>>>>>>>
LOOP
FETCH sRs INTO dRs;<<<<<<<<<<<<<<<<<<<标号3>>>>>>>>>>>>>>>>>>>>
EXIT WHEN sRs%NOTFOUND;
END LOOP;
v_pagecount:=sRs%ROWCOUNT/v_pagesize;
CLOSE sRs;
END SP_PAGINATION;
end PK_PAGINATION;
达人看一下上面的包,我是想送入过程一个SQL语句,然后根据该语句通过dRs返回<< 部分>> 记录集。
但我在执行标号3的语句时,总是提示数据类型不匹配,不管把标号1/标号2的语句都不要,还是把标号1或标号2启用。
OPEN sRs以后,如果不把sRs赋dRs的话,dRs就是NULL,在执行了标号2语句dRs不是NULL的时候,也是提示类型不匹配