如何检查向表中返回值的存储过程是否成功
本文关键字:返回值 存储过程 成功 是否 何检查 检查 | 更新日期: 2023-09-27 18:00:40
我有一个存储过程,它运行一条insert语句,并将一个值返回到数据表中。我必须使用数据表提前感谢:)
我的SQL存储过程
begin
Declare @postID int = 0
insert into reviews (customerID, title, review)
values (@cusomerID, @title, @review)
set @postID = SCOPE_IDENTITY()
end
返回值存储在一个数据表中,我想检查插入是否成功。
我使用ajax jquery来执行insert,它调用存储过程并返回值
称为的方法
if (data.Rows[0]["post_ID "] != 0)
{
return "successful";
}
else{
return "failed";
}
在javascript 中
if(result != "failed"){
run code
}
然而,即使插入失败,它也会返回成功。
任何帮助都将不胜感激。
SCOPE_IDENITY()返回最后一个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
一旦出现任何错误,代码中就会出现异常(事务也会回滚)。