Точный номер строки ошибки в EXECUTE IMMEDIATE - PullRequest
1 голос
/ 14 марта 2012

Ниже приведена процедура в моем коде:

PROCEDURE OutputShipTo (MonRec IN OUT meta_imi_monitor%ROWTYPE, 
                        CustomerChangesRec IN CustomerChanges%ROWTYPE, 
                        InType In CHAR) 
IS
BEGIN
  EXECUTE IMMEDIATE sql_stmt_loc_insert USING 'ZMSH', 'ZMSH',
      CustomerChangesRec.cab_id,CustomerChangesRec.tab_id,'ZMSH';
END;

Когда эта процедура выполняется, я получаю следующую ошибку:

ERROR at line 1:
ORA-00904: invalid column name
ORA-06512: at line 601
ORA-06512: at line 1114

Это просто дает мне номер строки ошибки, где находится процедура и где она вызывается. Возможно, есть недопустимый столбец в DML 'sql_stmt_loc_insert', но я не могу понять, где он находится. Есть ли способ, я могу узнать точный номер строки ошибки из stmt DML 'sql_stmt_loc_insert', чтобы я мог увидеть недопустимый столбец и исправить его.

Я не могу дать код sql_stmt_loc_insert из-за очень большого количества строк.

Спасибо!

1 Ответ

3 голосов
/ 14 марта 2012

С интерфейсом EXECUTE IMMEDIATE невозможно получить более подробную информацию об ошибке.

Как правило, люди отлаживают код, который генерирует динамический SQL, для распечатки (либо на консоль, либо натаблица журнала) оператор SQL и переменные связывания перед вызовом EXECUTE IMMEDIATE.Затем вы можете запустить код в интерактивном режиме, чтобы получить более подробную информацию об ошибке.

...