Как отловить все ошибки, возникающие при выполнении файла SQL, содержащего несколько операторов INSERT INTO, для вставки нескольких строк? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть sql файл TW_popul. sql, содержащий несколько операторов INSERT:

INSERT INTO conversion_fee (FEE_ID, FEE_AMOUNT, DISCOUNT_AMOUNT, FEE_TYPE, PAYMENT_ORDER_ID) 
VALUES (32353357, 8.67, 0, 'com.transferwise.fx.payment.fee.RequestFee', 29639547);

INSERT INTO conversion_fee (FEE_ID, FEE_AMOUNT, DISCOUNT_AMOUNT, FEE_TYPE, PAYMENT_ORDER_ID) 
VALUES (32358776, 1.84, 0, 'com.transferwise.fx.payment.fee.RequestFee', 29643922);

INSERT INTO conversion_fee (FEE_ID, FEE_AMOUNT, DISCOUNT_AMOUNT, FEE_TYPE, PAYMENT_ORDER_ID) 
VALUES (32374786, 11.26, 0, 'com.transferwise.fx.payment.fee.RequestFee', 29656743);

INSERT INTO conversion_fee (FEE_ID, FEE_AMOUNT, DISCOUNT_AMOUNT, FEE_TYPE, PAYMENT_ORDER_ID) 
VALUES (32374911, 1.49, 0, 'com.transferwise.fx.payment.fee.RequestFee', 29656849);

Некоторые из этих операторов вставки нарушают правила ограничения и выдают ошибки (например, «ОШИБКА в строке»). 1: ORA-00001: ограничение уникальности (TW.BT_BANK_TRANSACTION_ID_PK) нарушено ").

1 row created.


1 row created.


1 row created.

INSERT INTO conversion_fee (FEE_ID, FEE_AMOUNT, DISCOUNT_AMOUNT, FEE_TYPE, PAYMENT_ORDER_ID)
*
ERROR at line 1:
ORA-00001: unique constraint (TW.CF_FEE_ID_PK) violated



1 row created.


1 row created.

Как собрать все строки, генерирующие ошибку (например, в Error_table)?

Я читал о TRY ... CATCH, но я не уверен, что это применимо к обнаружению нескольких ошибок.

...