求一函数,有关字符串替换
有表tb1存储着一些姓名,结构如下
id      xm
1       ^1V6FV10V2CV6GV1KVKJV6GV1KV1C
2       ^1V6GV1KVK2V6FV26VJKV6GV1KV1C
有表tb2(密码字典)
存储着汉字与其对应加密码结构如下
key     pas
张       FV10V2C
三       GV1KVKJ
丰       GV1KV1C
上       GV1KVK2
官       FV26VJK
tb1.xm字段,是按如下规则填充的
^1V6+第一个字的加密码+V6+第二个字的加密码+V6+第三个字的加密码(如果有第个字,类推)
如张三丰的加密数据为:^1V6FV10V2CV6GV1KVKJV6GV1KV1C
求一解密函数
更新tb1.xm字段,显示汉字明文
如‘^1V6FV10V2CV6GV1KVKJV6GV1KV1C’更新为‘张三丰’
‘^1V6GV1KVK2V6FV26VJKV6GV1KV1C’ 更新为’上官丰’
              
------解决方案-------------------- 引用: Quote: 引用:  
我开始给你写的解密代码,你说效率不行,对应成函数你是怎么改的? 
create or replace function NG_umm(name in varchar2) return varchar2 is 
   Result varchar2(400); 
   ls_sql varchar2(4000); 
   v_length number:=(length(name)-2)/9; 
   v_mm varchar2(4000); 
 begin 
   begin 
     for i in  1..v_length loop 
   ls_sql:='select a.key from jm a where a.pas='''------解决方案--------------------  substr(regexp_replace(name, '\^1V6------解决方案--------------------  V6', ''),'------解决方案--------------------  i*7-6------解决方案--------------------  ',7)------解决方案--------------------  ''''; 
      execute immediate ls_sql into v_mm; 
      Result:= Result------解决方案--------------------  v_mm; 
     end loop; 
   exception when others then  Result:='';  end ; return(Result); 
 end ;  
下面这样试下,你那个ls_sql 拼的有问题:
create or replace function NG_umm(name in varchar2) return varchar2 is 
  Result   varchar2(400); 
  ls_sql   varchar2(4000); 
  v_length number := (length(name) - 2) / 9; 
  v_mm     varchar2(4000); 
  m        number; 
begin 
  begin 
    for i in 1 .. v_length loop 
      /*  ls_sql := 'select a.key from jm a where a.pas='''