2016-04-27 50 views
1

我有一個批量數據,我打算使用Sybase中的簡單SQL插入進行上載。 現在,由於某些約束違規,一些sql的失敗。在Sybase中插入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,因爲它需要這麼長時間,我承擔不起。

乾杯!

回答

2

您需要在INSERT語句(我假設您正在執行)後直接檢查@@錯誤。如果它不是0,那麼你只是有一個錯誤條件。但是,錯誤檢查必須在INSERT後立即進行。 任何執行的其他語句都會清除錯誤狀態。最好首先複製@error:

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

Thanks RobV !!!! –