У меня никогда не было проблем с интерпретацией сообщений об ошибках Oracle. Частично причина в том, что каждый интерактивный инструмент, который я видел для разработки SQL для Oracle, указывает на местоположение, в котором произошел сбой запроса. Это включает в себя SQL * Plus, как отмечали другие, и модуль Perl DBI:
$ exec_sql.pl 'select * from daul'
DBD::Oracle::db prepare failed: ORA-00942: table or view does not exist (DBD ERROR: error possibly near <*> indicator at char 14 in 'select * from <*>daul') [for Statement "select * from daul"] at exec_sql.pl line 68.
Хорошо, что немного трудно читать, так как все это сжато на одной строке. Но инструмент с графическим интерфейсом мог бы указывать на маркер, где у Oracle начались проблемы с запросом. И, если немного поработать над парсером, вы можете написать инструмент для определения таблицы с ошибками.
Чтобы ответить на основной вопрос, кажется, что ошибки Oracle не предназначены для того, чтобы работать так, как вы ожидаете. Насколько я могу судить, ни одно из сообщений об ошибках в Oracle не поддерживает переменную text. Вместо этого Oracle возвращает два бита информации: номер ошибки и место, где происходит ошибка. Если у вас есть надлежащие инструменты, диагностировать ошибку по этим частям довольно легко. Можно утверждать, что система Oracle лучше для создателей инструментов, чем система, которая предоставляет переменные объемы диагностических данных в зависимости от ошибки. Представьте себе, что вам нужно написать собственный синтаксический анализатор для всех сообщений об ошибках Oracle (включая будущие ошибки), чтобы выделить ошибочное местоположение.
Иногда включение имени таблицы может вводить в заблуждение. Просто знание, где что-то пошло не так, может быть огромной помощью:
SQL> select * from where dummy = 'X';
select * from where dummy = 'X'
*
ERROR at line 1:
ORA-00903: invalid table name
Что касается того, почему Oracle решил так поступить, у меня есть некоторые предположения:
IBM использовала этот стиль сообщения об ошибке для System R, который Ларри Эллисон, Боб Майнер и Эд Оутс скопировали для создания Oracle V2. (Обратная совместимость.)
Номер и местоположение ошибки - это наименьшее возможное представление диагностической информации. (Скупость.)
Как я указывал выше, для упрощения создания инструментов, подключающихся к Oracle. (Interoperability.)
В любом случае, я не думаю, что вам нужно быть администратором баз данных, чтобы выяснить, какой таблицы не существует. Вам просто нужно использовать соответствующие инструменты. (И скорректируйте свои ожидания, я полагаю.)