1、首先建立一个包,用户创建一个游标类型
create or replace package pkg_query as
type cur_query is ref cursor;
end pkg_query;
2、创建存储过程
create OR REPLACE PROCEDURE prc_query
(p_tableName
in varchar2,
--表名
p_strwhere
in varchar2,
--查询条件 --*
p_orderColumn
in varchar2,
--排序的列 --*
p_orderStyle
in varchar2,
--排序方式 --*
p_curPage
in out Number, --当前页
p_pageSize
in out Number, --每页显示记录条数
p_totalRecords
out Number,
--总记录数 --*
p_totalPages
out Number,
--总页数
v_cur
out pkg_query。
cur_query)
--返回的结果集
IS
v_sql VARchar2(1000) := ’’;
--sql语句
v_startRecord Number
(4);
--开始显示的记录条数
v_endRecord Number
(4);
--结束显示的记录条数
BEGIN
--记录中总记录条数
v_sql := ’select TO_NUMBER(count(*)) FROM ’ || p_tableName || ’ where 1=1’;
IF p_strwhere IS NOT NULL or p_strwhere ’’ THEN
v_sql := v_sql || p_strwhere;
END IF;
execute IMMEDIATE v_sql INTO p_totalRecords;
--验证页面记录大小
IF p_pageSize