declare
type n_sor is ref cursor;
m_sor n_sor;
v_field1 t1.field1%type;
v_mc t2.mc%type;
cursor t_sor is
select substr(feild2,1,instr(feild2,';')-1) table_name,substr(feild2,instr(feild2,';')+1,1) id from t1;
str varchar2(30);
begin
for v_sor in t_sor loop
v_table:=v_sor.feild2;
str:='select a.field1,b.mc from t1 a,'||v_sor.table_name||' b where a.'||v_sor.id||'='||v_sor.table_name||'.id';
open m_sor for str;
fetch m_sor into v_field1,v_mc;
loop
exit when m_sor%notfound;
dbms_output.put_line(v_field1,v_mc);
end loop;
close m_sor;
end loop;
/
select t1.field2, t2.mc from t1, t2 where substr(t1.field2,1,2) = 't2' and substr(t1.field2,4,1) = t2.id
union
select t1.field2, t3.mc from t1, t3 where substr(t1.field2,1,2) = 't3' and substr(t1.field2,4,1) = t3.id
union
select t1.field2, t4.mc from t1, t4 where substr(t1.field2,1,2) = 't4' and substr(t1.field2,4,1) = t4.id;