create or replace function FN_QY_IMPORT(year in VARCHAR2,
jq_table_name in varchar2)
return varchar2 is
TYPE myCur IS REF CURSOR;
RLT varchar2(32765);
str_field varchar2(2000);
v_field varchar2(200);
cur_field myCur;
str_RIMS_field varchar2(2000);
v_wlbm varchar2(200);
v_zdm varchar2(200);
cur_RIMS_field myCur;
str_insert varchar2(2000);
str_insert_sele varchar2(2000);
V_ERRORCODE number;
V_ERRORMSG varchar2(6000);
begin
--循环指定年度久其数据表的字段
str_insert:='';
str_insert_sele:='';
str_field:='select s.COLUMN_NAME from user_tab_columns s where s.TABLE_NAME='''||' GOV_'||year||'DATA_'||jq_table_name||'''';
open cur_field for str_field;
loop
fetch cur_field
into v_field;
exit when cur_field%notfound;
v_wlbm:='';
v_zdm:='';
str_RIMS_field:=
'select q.wlbm,q.zdm from gov_ql_jtt_4 q where q.jqbm='''||jq_table_name||''' and q.year'||year||'='''||v_field||'''';
open cur_RIMS_field for str_RIMS_field;
loop
fetch cur_RIMS_field
into v_wlbm,v_zdm;
exit when cur_RIMS_field%notfound;
end loop;
if v_wlbm is null or v_zdm is null then
RAISE_APPLICATION_ERROR( -20001, '久其表:'||jq_table_name||','||year||'年的'||v_field||'字段未在配置表中定义。');
end if;
str_insert:=str_insert||','||v_zdm;
str_insert_sele:=str_insert_sele||','||v_field;
--每个字段在对应关系表中找到RIMS对应的表和字段
--拼出insert语句
--结束循环
end loop;
str_insert:='insert into '||v_wlbm||'( '||substr(str_insert,2)||') select '||substr(str_insert_sele,2)||' from '||' GOV_'||year||'DATA_'||jq_table_name;
str_insert:='insert into '||v_wlbm||'( '||substr(str_insert,2)||') select '||substr(str_insert_sele,2)||' from '||' GOV_'||year||'DATA_'||jq_table_name; ----有问题
RLT := str_insert;
return RLT;
exception
when others then
V_ERRORCODE := sqlcode;
V_ERRORMSG := sqlerrm;
RLT := TO_CHAR(V_ERRORCODE) || V_ERRORMSG;
return RLT;
end FN_QY_IMPORT;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29111203/viewspace-1258131/
,如需转载,请注明出处,否则将追究法律责任。