nc财务辅助翻译器
create or replace function Fun_getRInfo(accssitem varchar2,
cflag number,
cpk varchar2) return varchar2 is
pk_checktype varchar(200) := '';
pk varchar(200) := '';
V_SQL varchar(2000) := '';
typename varchar(200) := '';
v_table varchar(20) := '';
v_tablepk varchar(20) := '';
v_tablekey varchar(20) := '';
v_value varchar(200) := '';
v_restring varchar(200) := '';
begin
pk_checktype := trim(accssitem);
pk := cpk;
if pk_checktype is null then v_restring:='';
return v_restring;
end if;
select bac.name, c.defaulttablename, mcolumn.name
into typename, v_table, v_tablepk
from bd_accassitem bac
left join md_class c
on c.id = bac.classid
left join md_column mcolumn
on mcolumn.tableid = c.defaulttablename
and pkey = 'Y'
where bac.pk_accassitem = pk_checktype;
if cflag=1 and v_table = 'fa_category' then v_tablekey :='cate_name';
elsif cflag=1 then v_tablekey :='name';
elsif cflag=2 and v_table = 'fa_category' then v_tablekey :='cate_code';
elsif cflag=2 then v_tablekey :='code';
end if;
if( v_table is not null and pk is not null and pk <> '~') then
V_SQL := 'select nvl('||v_tablekey||','') from ' || v_table|| ' where '|| v_tablepk ||'='||chr(39)|| pk||chr(39) ;
EXECUTE IMMEDIATE V_SQL into v_value ;
else v_value:=pk;
end if;
if typename is not null then
v_restring:=typename||':'||v_value;
else v_restring:='';
end if;
return v_restring;
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line(v_table);
return v_restring;
end Fun_getRInfo;
原文链接:https://blog.youkuaiyun.com/weixin_48692740/article/details/130499370