ORACLE之拼音检索(任意字符)

 存过程结合汉字字典表实现全字符快速检索:

1.储存过程

参数说明:

--v_string 输入字符,支持任意字符

--v_tablename 表名

--v_fieldname 字段名

--v_number 默认显示数量

--outCursor 以游标的形式返回结果集

create or replace procedure pro_pyquery(v_string In varchar2 default null,
v_tablename In varchar2,v_fieldname in varchar2,v_number in number,
outCursor out SYS_REFCURSOR)
as
  lv_spell varchar2(2000);
  lv_temp string(32000);
  lv_char varchar2(100);
  --no_string exception;
begin
  --if v_string is null then
  --raise no_string;
  --end if;
lv_temp:='select distinct '||v_fieldname||' from '||v_tablename||' where ';
for i In 1..length(v_string) loop
lv_char:=substr(v_string,i,1);
if upper(lv_char)='A' then
lv_spell:='((substr('||v_fieldname||','||i||',1) in (select hzmc from hzzd where hzszm=''A''))
 or (substr(lower('||v_fieldname||'),'||i||',1)=''a'')) and rownum<='||v_number;
end if;
if upper(lv_char)='B' then
lv_spell:='((substr('||v_fieldname||','||i||',1) in (select hzmc from hzzd where hzszm=''B''))
 or (substr(lower('||v_fieldname||'),'||i||',1)=''b'')) and rownum<='||v_number;

end if;
if upper(lv_char)='C' then
lv_spell:='((substr('||v_fieldname||','||i||',1) in (select hzmc from hzzd where hzszm=''C''))
 or (substr(lower('||v_fieldname||'),'||i||',1)=''c'')) and rownum<='||v_number;

end if;
if upper(lv_char)='D' then
lv_spell:&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值