I don't know if this will improve performance but here is an example, use outer join. select C.TRC_CUENTA,nvl(A.CTS_NOMBRE,B.CTS_NOMBRE) name from transace C, ( select CTS_CUENTA,CTS_NOMBRE from cuentaE where cts_TRATAMIENTO = 'IN') A, ( select CTS_CUENTA,CTS_NOMBRE from cuentaE where cts_TRATAMIENTO = 'EG') B WHERE C.TRC_CUENTA = A.CTS_CUENTA(+) AND C.TRC_CUENTA =B.CTS_CUENTA(+) If you could create a materialized view from this I think this could really help. If you see when there is records in the second query it will return null Juan Carlos Reyes Pacheco OCP Database 9.2 Standard Edition ----- Original Message ----- From: "Guang Mei" <gmei@xxxxxxxxxx> To: "Oracle-L-freelists" <oracle-l@xxxxxxxxxxxxx> Sent: Thursday, April 29, 2004 3:56 PM Subject: a pl/sql question Hi: I have the following pl/sql function code that gets called a lot in our application. I have looked all the querys and they are running fine (have proper indexes, etc). I am now trying to see if I could optimize this code a bit. One thing I am thinking is that the sub pl/sql block within this function is creating some "overhead". But if I put the code "select abbrev into ..." in the function directly (instead of in pl/sql block) then how could I capture it's exception ("when others then select name into jname from journal where id=jid;")? Please let me know you have some ideas. Thanks. Guang --- here is the code snip: begin select title, volume, pages, year, journalid into ttl, vol, pg, yr, jid from ref where id=rn; begin select abbrev into jname from journal2abbrev where id=jid and medline='Y'; exception when others then select name into jname from journal where id=jid; end; str := str || ' ' || getAuthorString(rn,maxAuthLen) || ' ' || ttl || ' '; str := str || jname || ' ' || to_char(vol) || ', ' || pg; str := str || ' (' || to_char(yr) || ').'; return str; exception when others then return null; end RefString; ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx put 'unsubscribe' in the subject line. -- Archives are at //www.freelists.org/archives/oracle-l/ FAQ is at //www.freelists.org/help/fom-serve/cache/1.html ----------------------------------------------------------------- ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx put 'unsubscribe' in the subject line. -- Archives are at //www.freelists.org/archives/oracle-l/ FAQ is at //www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------