plsql - Aliasing in Bulk Collect giving error of unimplemented feature -
the problem statement: user specify name based on have pull names of 2 tables table , extract values tables.i have created pl/sql procedure , since select query can return n number of rows i'm using bulk collect. have created , object based on fields want extract. problem columns common in both tables, if don't use alias ambiguous column error , if use error of unimplemented feature.
here's code:
create or replace type recon_obj_vib object (recon_table_key number(19) ,recon_chglogattr_idxlst varchar2(1000 char)); create or replace type recon_tab_vib table of recon_obj_vib; create or replace procedure nomatchreport_proc(tabledesc in varchar2) l_recon_tab_vib recon_tab_vib := recon_tab_vib(); n integer :=0; out varchar2(2000); tablename1 varchar2(25); tablename2 varchar2(25); tabledesc_without_space varchar2(25); tabledesc_ra varchar2(25); begin tabledesc_without_space:=regexp_replace(tabledesc,'\s'); tabledesc_ra:=upper('ra_' || tabledesc_without_space || ' %'); out:= 'select recon_table_name recon_tables recon_table_desc = (:value) , rownum=1 , recon_table_name (:username)'; execute immediate out tablename1 using tabledesc,tabledesc_ra; out:= 'select recon_table_name recon_tables recon_table_desc = (:value) , rownum=1 , recon_table_name not (:username)'; execute immediate out tablename2 using tabledesc,tabledesc_ra; out:='select a.recon_table_key,a.recon_chglogattr_idxlst bulk collect l_recon_tab_vib ' || tablename1 || ' , ' || tablename2 || ' b a.re_key = b.re_key , rownum=1'; execute immediate out l_recon_tab_vib; in 1..l_recon_tab_vib.count loop dbms_output.put_line('recon_table_key '|| l_recon_tab_vib(i).recon_table_key ||' recon_chglogattr_idxlst ' || l_recon_tab_vib(i).recon_chglogattr_idxlst ); end loop; end;
this part:
out:='select a.recon_table_key,a.recon_chglogattr_idxlst bulk collect l_recon_tab_vib ' || tablename1 || ' , ' || tablename2 || ' b a.re_key = b.re_key , rownum=1'; execute immediate out l_recon_tab_vib;
should be:
out:='select a.recon_table_key,a.recon_chglogattr_idxlst ' || tablename1 || ' , ' || tablename2 || ' b a.re_key = b.re_key , rownum=1'; execute immediate bulk collect l_recon_tab_vib;
i.e. bulk collect into
clause part of calling pl/sql not part of dynamic sql.
Comments
Post a Comment