返回Sybase中insert sql的代码

时间:2016-04-27 15:31:49

标签: sybase sybase-ase sybase-ase15

我有一个批量数据,我打算使用Sybase中的简单SQL插件上传。 现在一些sql由于某些约束违规而失败。

由于我一次性运行所有sqls,我找不到哪个sql失败。

数据库客户端控制台就是打印它,

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

所以我想有一个INT来捕获每个insert语句的执行并在它们失败时打印。

我发现这是一个程序,但我似乎找不到为SQL做的方法,

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

有没有办法获取插入的返回码?还是其他任何方式?

注意:我不希望每个sql都有一个BEGIN和END,因为它需要这么长时间而且我买不起。

干杯!!

1 个答案:

答案 0 :(得分:2)

您需要在INSERT语句(我假设您正在执行)之后直接检查@@ error。如果它不是0,那么你只是有一个错误条件。但是,错误检查必须在INSERT之后立即进行。 执行的任何其他语句将清除错误状态。最佳复制@error第一:

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