表A有字段
 code_name 
 1,2
 2,3
 1,2,3-----
表B
有 1,2,3...等的解释表
code_id  res 
1        联电无效
2        联电无人接
3        .....
----------
想实现
把表A翻译出来
code_name, re 
1,2        联电无效,联电无人接应该用函数可以实现,但就是不知怎写

解决方案 »

  1.   

    create table test3(code_id integer, res varchar2(100));
    insert into test3
    select 1,'联电无效' from dual
    union all
    select 2,'联电无人接' from dual
    union all
    select 3,'无' from dual;
    --创建函数
    create or replace function f_test1(var_str in string,delimiter in string) return string
    is
    var_tmp varchar2(2000);
    var_element varchar2(2000);
    rst varchar2(2000);
    begin
    var_tmp := var_str;
    rst:='';
    while instr(var_tmp,delimiter)>0 loop
    var_element := substr(var_tmp,1,instr(var_str,delimiter)-1);
    var_tmp := substr(var_tmp,instr(var_str,delimiter)+1,length(var_tmp));
    select res into var_element from test3 where code_id=var_element;
    rst:=rst||var_element||',';
    end loop;
    select res into var_element from test3 where code_id=var_tmp;
    rst:=rst||var_element;
    return rst;
    end;--执行测试查询
    select '1,2',f_test1('1,2',',') re  from dual
    --Result
    1,2 联电无效,联电无人接
      

  2.   

    十分感谢,hongqi162,这正是我想要的...
    本来我对此社区已失望了,但今天又让我看到了一点署光.