Код возврата для вставки sql в Sybase

У меня есть объемные данные, которые я планирую загрузить с помощью простой вставки SQL в Sybase. Теперь некоторые из sql терпят неудачу из-за некоторого нарушения ограничений.

Поскольку я запускаю все sql за один раз, я не могу найти, какой sql не работает.

Консоль клиента БД просто печатает это,

Attempt to insert duplicate key row in object 'Employee' with unique index 'Employee_uk'
(0 rows affected)

Поэтому я подумал о том, чтобы иметь INT для захвата выполнения каждого оператора вставки и печати, если они потерпели неудачу.

Я нашел это для процедуры, но не могу найти способ сделать это для SQL,

DECLARE @status INT
EXECUTE @status = proc_sample
IF @status != 0
    PRINT 'procedure failed'

Есть ли способ получить код возврата для вставки? Или какие-то другие способы?

Примечание. Я не хочу иметь BEGIN и END для каждого sql, так как это занимает так много времени, и я не могу себе этого позволить.

Ваше здоровье!!


person mani_nz    schedule 27.04.2016    source источник


Ответы (1)


Вам нужно проверить @@error сразу после инструкции INSERT (которую, как я предполагаю, вы выполняете). Если это не 0, то у вас просто возникла ошибка. Однако проверка ошибок должна выполняться сразу после INSERT. Любой другой выполненный оператор сотрет статус ошибки. Лучшая копия @error первой:

DECLARE @err INT
[...]
INSERT INTO mytable....
SET @err = @@ERROR
IF @err <> 0
BEGIN
... error action...
END
person RobV    schedule 29.04.2016