存储过程的创建问题,急
5I5Q 2007-06-20 04:06:07 大家好,我在网上查到一个oracle的分页存储过程,但是在sql plus中创建的时候,报错,错误如下:PLS-00201:必须说明标识符'REFCURSORTYPE'
然后,我看到那个存储过程前面还有一句话,是create or replace type refCursorType is REF CURSOR; --游标类型定义,用于返回数据集
由于我对oracle不是很熟悉,现在遇到了好几百万的数据量,希望大伙帮帮忙。
告诉我如何正确创建这个存储过程,谢谢
create or replace procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out refCursorType)
as
v_sql varchar2(3000);
v_count int;
v_heiRownum int;
v_lowRownum int;
begin
----取记录总数
execute immediate p_SqlCount into v_count;
p_OutRecordCount := v_count;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize + 1;
v_sql := 'SELECT *
FROM (
SELECT A.*, rownum rn
FROM ('|| p_SqlSelect ||') A
WHERE rownum <= '|| to_char(v_heiRownum) || '
) B
WHERE rn >= ' || to_char(v_lowRownum) ;
--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
OPEN p_OutCursor FOR v_sql;
end sp_Page;