2016-01-25 2 views
1

Кто-нибудь знает, возможно ли это?Хранение ошибки/результата запроса оракула в таблице

Пример:

CREATE TABLE XPTO (
this_is_an_error_because_there_is_no_data_type 
); 

Результат запроса:

"**Error starting at line X in command: 
blablabla 
SQL ERROR: ORA-02263**" 

Можно ли сохранить результат запроса в виде таблицы?

Я создаю скрипт «установки» с таблицами/процедурами CREATE, GRANT Простой материал, но я хочу знать, можно ли сохранить в таблице ошибки, которые могут появляться во время установки моих таблиц или что бы там ни было (в моем установочном файле .sql).

Любая помощь, идеи, работа вокруг, будет оценена по достоинству. Спасибо, парни!

+1

Обычно люди просто SPOOL в файл, чтобы впоследствии его можно было просмотреть для любых ошибок. –

+0

Hummm, который может быть хорошим решением для моей «проблемы». Спасибо большое! –

ответ

0

В SQL * Plus это можно сделать с помощью SQL*Plus error logging.

Включить ведение журнала ошибок:

SQL> set errorlogging on 

Запуск сценария:

SQL> CREATE TABLE XPTO (
    2 this_is_an_error_because_there_is_no_data_type 
    3 ); 
this_is_an_error_because_there_is_no_data_type 
* 
ERROR at line 2: 
ORA-00972: identifier is too long 

В конце концов, все ошибки сохраняются в таблице SPERRORLOG.

SQL> select * from sperrorlog; 

USERNAME 
------------------------------------------------ 
TIMESTAMP 
------------------------------------------------ 
SCRIPT 
------------------------------------------------ 
IDENTIFIER 
------------------------------------------------ 
MESSAGE 
------------------------------------------------ 
STATEMENT 
------------------------------------------------ 
JHELLER 
25-JAN-16 01.43.13.000000 PM 


ORA-00972: identifier is too long 
CREATE TABLE XPTO (
this_is_an_error_because_there_is_no_data_type 
) 

Как Тони Эндрюс сказал в комментарии, SPOOL является наиболее распространенным способом для этого. Но это потому, что очень мало скриптов SQL * Plus полностью автоматизированы. Если вы нацелены на истинную автоматизацию, вам понадобится нечто вроде SQL * Plus регистрации ошибок или whenever sqlerror exit failure для обнаружения ошибок.

+0

спасибо! Я думаю, что с помощью обоих ответов мне удастся найти хороший подход к моей проблеме: D. –

Смежные вопросы