2013-02-24 19 views
1

我有一個運行插入語句的存儲過程,它將一個值返回給數據表。我必須用一個數據表預先感謝您:)如何檢查存儲過程是否將值返回到表中,如果其成功

我的SQL存儲過程

begin 
Declare @postID int = 0 
insert into reviews (customerID, title, review) 
values (@cusomerID, @title, @review) 
set @postID = SCOPE_IDENTITY() 
end 

返回值存儲在一個DataTable我想檢查,如果插入成功。甚至

我使用AJAX的jQuery做的插件,該插件調用存儲過程並返回一個值

在JavaScript方法稱爲

if (data.Rows[0]["post_ID "] != 0) 
      { 
       return "successful"; 
      } 
else{ 
return "failed"; 
} 

if(result != "failed"){ 
run code 
} 

但是它返回成功當插入失敗時。

任何幫助將是偉大的謝謝你。

回答

1

SCOPE_IDENTITY()返回最後一個auto-id。在你的情況下,它是在你的失敗插入之前返回一個。

嘗試像

BEGIN 
    DECARE @postID int = 0 
    INSERT INTO reviews (customerID, title, review) VALUES (@cusomerID, @title, @review) 
    IF @@ERROR <> 0 
     SET @postID = -1 
    ELSE 
     SET @postID = (select SCOPE_IDENTITY()) 
    SELECT @postID 
END 

,並在你的代碼,如果ID == -1你知道它失敗了。

或者,你可以

BEGIN 
    SET XACT_ABORT ON 
    DECARE @postID int = 0 
    INSERT INTO reviews (customerID, title, review) VALUES (@cusomerID, @title, @review) 
    SET @postID = (select SCOPE_IDENTITY())   
    SELECT @postID 
END 

和異常將發生在任何錯誤代碼(事務回滾太)。

相關問題