SQL> create or replace function lookup(l_input number) return varchar2
  2  DETERMINISTIC
  3  as
  4    l_output LookupTable.value%TYPE;
  5  begin
  6    select value into l_output from LookupTable where key = l_input;
  7    return l_output;
  8  end;
  9  /


create table LookupTable ( key number, value varchar2(100) ) ;

insert into LookupTable (key, value) values ( 1, 'YAMAHA');

insert into LookupTable (key, value) values ( 2, 'YAMAHA');

commit;


select /*+ index(t t_no_idx) */ (select lookup(t.no) from dual) 
from    big_table t
where   t.no > 0 ;


update LookupTable set value = 'YAMAHA2';
commit;



select l.value
from   big_table t, LookupTable l
where  l.key(+) = t.no ;

select (select value from LookupTable where key = t.no) 
from   big_table t ;



############################################################################

delete from LookupTable;

insert into LookupTable values( 1, 'YAMAHA' ); 

commit;

create table t
as
select 1 no from dual;

select no, lookup(no) value from t;

create index t_idx on t( lookup(no) );   --> FBI ε 

select no, lookup(no) value, lookup(1) value2 from t
where  lookup(no) = 'YAMAHA';

update LookupTable set value = 'YAMAHA2' where key = 1;

commit;

select no, lookup(no) value, lookup(1) value2 from t
where  lookup(no) = 'YAMAHA';
