Я пытаюсь написать процедуру, чтобы проверить, возникли ли какие-либо проблемы во время импорта, чтобы я мог вызвать ошибку. Итак, я написал следующий блок SQL внутри своей хранимой процедуры. Но я всегда получаю нулевое значение для всех выбранных значений (actualRowCount
, skippedRowCount
, importedRowCount
, updatedRows
, rejectedRows
, committedRows
), кроме msgs
.
Я не могу понять, почему я должен получать значения только для msgs
, но не для других. Все они должны иметь значение не менее 0
. Предположим, что все необходимые переменные уже объявлены в процедуре.
Я получаю DB2 SQL-Error: -438
, когда делаю RAISE_APPLICATION_ERROR
за пределами блока If в целях тестирования, и получаю нулевую ошибку при попытке печати с использованием Put_LINE
Begin Atomic
CALL SYSPROC.ADMIN_CMD( 'IMPORT FROM /tmp/city.ixf OF ixf MESSAGES ON SERVER INSERT INTO city');
ASSOCIATE RESULT SET LOCATORS(resultSet) WITH PROCEDURE SYSPROC.ADMIN_CMD;
ALLOCATE C1 CURSOR FOR RESULT SET resultSet;
FETCH C1 INTO actualRowCount, skippedRowCount , importedRowCount, updatedRows, rejectedRows, committedRows, msgs;
IF actualRowCount <> importedRowCount THEN
CALL RAISE_APPLICATION_ERROR(-20040, 'import fail:' || msgs);
END IF;
Close C1;
End;