日期:2014-05-16  浏览次数:20924 次

警告: 创建的过程带有编译错误。Oracle分页存储过程,请帮忙看下错在哪里了
自己参照例子写的一个Oracle分页的存储过程,调了好久,不知道错在哪里,麻烦帮忙看下
总是报“警告: 创建的过程带有编译错误。”
以下是代码:
--1、建一个包,用户创建一个游标类型
CREATE or REPLACE package pkg_query AS
  TYPE cur_query is ref CURSOR;
END pkg_query;

--2、创建存储过程
CREATE OR REPLACE PROCEDURE proc_tb_paging
(tableName in varchar2, --表名
  strWhere in varchar2, --WHERE条件
  orderBy in varchar2, --排序
  orderFiedName in varchar2, --排序字段
  pageIndex in out number, --页码
  pageSize in out number, --页大小
  totalRecords out number, --总数据
  totalPages out number, --总页数
  v_cur out pkg_query.cur_query --返回的结果集
)
IS
v_sql varchar2(100):='';--SQL语句
v_startRecord number(4);--开始显示数据记录的第几条
v_endRecord number(4); --结束显示数据记录的第几条
BEGIN
--记录中总记录条数
v_sql:='select to_number(count(*)) from '||tableName||'where 1=1 ';
IF strWhere is not null or strWhere <> '' THEN v_sql:=v_sql||strWhere;
END IF;
EXECUTE IMMEDIATE v_sql INTO totalRecords;--执行语句并将值赋值给totalRecords

--验证页面记录大小
 IF pageSize<0 THEN pageSize=0;
END IF;
--根据页面值大小算返还页面数据的大小,MOD()是算出两数的余数值
IF MOD(totalRecords,pageSize)=0 THEN totalPages:=totalRecords/pageSize;
ELSE
 totalPage:=totalRecords/pageSize+1;
END IF;

--得出页码
IF pageIndex<1 THEN
 pageIndex=1;
END IF;
 IF pageIndex>totalPages THEN
pageIndex:=totalPages;
END IF;

--实现分页查询,根据各参数拼成查询语句
v_startRecord:=(pageIndex-1) * pageSize+1;
v_endRecord:=pageIndex * pageSize;
v_sql:='select * from '(SELECT A.*,RowNumber r FROM '||(select * from '||tableName;
IF strWhere is not null or strWhere <> '' THEN v_sql:=v_sql||'where 1=1 '||strWhere;
END IF;
IF orderFiedName is not null or orderFiedName <> '' THEN v_sql:=v_sql||'order by'|| orderFiedName ||' '||orderBy;
END IF;
v_sql:=v_sql||')A where A.RowNumber<='||v_endRecord||')B where r>='||v_startRecord;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;

END proc_tb_paging;

------解决方案--------------------
错误太多了
 pageSize :=0; 
 --赋值需要冒号
 v_sql:='select * from '(SELECT A.*,RowNumber r FROM '||(select * from '||tableName;
--引号中的引号需要转义,修改为
v_sql:='select * from ''(SELECT A.*,RowNumber r FROM ''||(select * from '||tableName;

totalPage未定义
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html