读书人

*Oracle中多条件模糊查询、拼音码创设

发布时间: 2012-09-24 13:49:41 作者: rapoo

*****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!完整后可以调试了,忘记告诉你,在表里多加一些数据哦!!!!!!

?

?

?

读书人网 >其他数据库

热点推荐