Oracle Tb表数据
FCHAR      FPY                  FWB
---------- -------------------- ----------
啊         A                    KB
锕         A                    QBS
嗄         A                    KDHT
哎         AI                   KAQ
哀         AI                   YEU
唉         AI                   KCT
埃         AI                   FCT
挨         AI                   RCT
锿         AI                   QYEY
捱         AI                   RDFF
皑         AI                   RMNN
....
....
求一函数GetMz  得到拼音码,五笔码简码
比如Str='张三#43' 
GetMz(Str,1) 得到拼音码
GetMz(Str,2) 得到拼音简码
GetMz(Str,3) 得到五笔码
GetMz(Str,4) 得到五笔码简码
要有特殊字符处理的?

解决方案 »

  1.   

    create table ILL
    (
      FILLNO   VARCHAR2(12),
      FILLCODE VARCHAR2(20),
      FILLNAME VARCHAR2(50),
      FPYCODE  VARCHAR2(20),
      FWBCODE  VARCHAR2(30)
    )create or replace procedure prd_tranwb
    as
      cursor cur_ill is
        select fillcode,fillname from ill order by fillcode;
      sWb varchar(50);
      sTmp varchar(10);
      iLen number(8);
    begin
      for rowIll in cur_ill loop
        sWb := '';
        iLen := 1;
        loop
          if iLen > length(rowIll.fillname) then exit;
          else
            sTmp := '';
            select count(*) into sTmp from mb1 where fchar = substr(rowIll.Fillname,iLen,1);
            if sTmp<> 0 then
              select substr(fwb,1,1) into sTmp from mb1 where fchar = substr(rowIll.Fillname,iLen,1);
            else
              sTmp := substr(rowill.fillname,ilen,1);
            end if;
            swb := swb||sTmp;
            iLen := iLen+1;
          end if;
        end loop;
        update ill set fwbcode = sWb where fillcode=rowill.fIllcode;
        commit;
      end loop;
    end;call prd_tranwb();