Я пытаюсь вернуть SQL-запрос из вызова базы данных, когда запрос не выполняется, а курсор возврата имеет состояние отказа. Эта строка запроса будет использоваться для ведения журнала.Oracle - получить SQL как строку при возникновении исключения
Один из способов сделать это - сохранить переменную, содержащую SQL-запрос в виде строки, а затем обернуть каждый запрос в блоке PL/SQL обработчиком исключений и, если возникнет исключение, вернуть строку запроса с помощью статус отказа для компонента пользовательского интерфейса.
Есть ли лучший способ сделать это? Объект исключений Oracle или любой другой пакет поддерживают эту функцию?
Этот вопрос кажется дубликатом для резьбы: Obtain the Query/CommandText that caused a SQLException
Однако я не нашел решение проблемы в этой теме, и я хотел бы знать, если есть какие-либо новые пакеты, поддерживаемые Oracle, которые дает нам строку запроса, вызвавшую возникновение исключения.
http://stackoverflow.com/a/493590/409172 может быть полезно. Хотя, если вы вызываете процедуру, которая запускает SQL, она может регистрировать этот вызов процедуры вместо SQL, который действительно вызвал сбой. –
Вы хотите сделать это _outside_ блоком PL/SQL или внешним блоком справа? т. е. если вы запустили 'select * from duala;' в SQL * Plus, он будет где-нибудь зарегистрирован? – Ben
@jonearles, я прочитаю его и дам вам знать, если он работает, спасибо! – Shankar