Palooka wrote,on my timestamp of 19/10/2009 10:58 AM:
Quote:
Assuming that your PL/SQL has half decent error handling, Serge's way is
much better IMHO. Anyway, as he he says, if the table does not exist/is
not visible, the block will not compile. |
And the "is not visible" bit is the important point there, IMHO.
Using the view USER_TABLES presumes the table(s) to be checked are created by
the user firing off the SQL. In this day and age of dbs with multiple schemas
and cross-schema access (consolidation et all) it's much better to check on
visibility: the table might be there and accessible, just not owned by the
schema of the same name as the user. That means using ALL_TABLES, not
USER_TABLES, at the very least. And what happens then if it is a view, not a table?
I still think Serge's (and Maxim's) approach of checking via parsing is the
correct one: it covers everything. Either the object (be it table or view) is
accessible or not, doesn't matter from where and in what conditions.