I suggest that you may do a trace to find out what exactly running in Oracle. You may find the parse/execution/cpu times. You may do another trace by using direct sql or procudure to compare with the previous trace. I believe you can find the truth how oracle run them. If I were the developer, anonymous block should be my last choice. If don't want direct sql, I prefer pl/sql procedure since oracle has many inside optimization feature on it. Just $0.02 Alex -The mountain is there.