*****Oracle中多条件模糊查询、拼音码创建使用*****
?
说明:开发中的多条件模糊查询是一个常见的例子,这里在工作中用到的一个近似版;在此主要解决三个问题:一、ORA-0131的异常问题;二、拼音码的创建使用;三、多条件的模糊查询。
一、ORA-0131的异常问题
???? 因为我是用oracle自带的scott用户测试的,没有设计过程的权限即报ora-0131的错误,这个错误网上解决办法很多了,解决方法用管理员权限登录,给scott授一下权就哦了。
create or replace package body pck_books as /**************************************************************************************** ***作用:根据传入条件模糊查询,返回总记录数和查询的数据集合. *** ***说明:v_sql,v_sql1是根据传入参数动态拼成的SQL语句. *** ***@Author:dyc *** *****************************************************************************************/ procedure prc_books_heck(typeCode in varchar2, searchName in varchar2, --查询关键字 pagesize in number, --每页显示数/number pageNow in number, --当前第几页/batch --myrows out number, --总记录数 p_cursor out bookspackage.mycur --返回的记录 ) is v_sql varchar2(1000); --用来拼装动态SQL --v_sql1 varchar2(1000); v_begin number := (pageNow - 1) * pagesize + 1; --用来做分页使用 v_end number := pageNow * pagesize; begin v_sql := 'select * from (select t1.*, rownum rn from (select b.bid,b.bname,b.bauthor,b.bpublic from books b where (b.bname like ''' || searchName || '%'' or b.bauthor like ''' || searchName || '%'' or b.bname_pym like ''' || searchName || '%'' or b.bauthor_pym like ''' || searchName || '%'') and b.bid > ''' || typeCode || --这个其实应该是类型编码 ''') t1 where rownum <= ' || v_end || ') where rn >= ' || v_begin; dbms_output.put_line(v_sql); open p_cursor for v_sql; /* v_sql1 := 'select * from (select t1.*, rownum rn from (select b.bid,b.bname,b.bauthor,b.bpublic from books b where (b.bname like ''' || searchName || '%'' or b.bauthor like ''' || searchName || '%'' or b.bname_pym like ''' || searchName || '%'' or b.bauthor_pym like ''' || searchName || '%'') and b.bid = ''' || typeCode || --这个其实应该是类型编码 ''''; execute immediate v_sql1 into myrows;*/ exception when others then dbms_output.put_line('==Exception===='); end;end;?
OK!完整后可以调试了,忘记告诉你,在表里多加一些数据哦!!!!!!
?
?
?