gpt4 book ai didi

sql - SQL 更新未抛出错误

转载 作者:行者123 更新时间:2023-12-04 04:34:35 25 4
gpt4 key购买 nike

我有这个简单的 SQL 更新

IF(@MyID IS NOT NULL)
BEGIN
BEGIN TRY
UPDATE DATATABLE
SET Param1=@Param1, Data2=@Data2,...
WHERE MyID=@MyID
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS 'Message'
RETURN -1
END CATCH

SELECT * FROM DATATABLE WHERE MyID= @@IDENTITY
SET @ResultMessage = 'Succefully Inserted'
SELECT @ResultMessage AS 'Message'
RETURN 0
END

问题是,当我提供一个无效的 ID 时,一个不存在的 ID 不会抛出错误,我仍然会收到错误代码 0 和成功插入的消息。我也在捕获之后添加了这个。还是什么都没有,我是不是漏掉了一些基本的东西?

END CATCH
IF(@@ERROR != 0)
BEGIN
SET @ResultMessage = 'Not Successful Inserted'
SELECT @ResultMessage AS 'Message'
RETURN -1
END
SELECT * FROM DATATABLE WHERE MyID= @@IDENTITY
SET @ResultMessage = 'Succefully Inserted'
SELECT @ResultMessage AS 'Message'
RETURN 0

我应该寻找什么特别的东西吗?

最佳答案

SQL 会捕获错误,但不更新任何行的 UPDATE 语句是有效的 SQL 语句,不应返回错误。您可以检查@@RowCount 以查看更新语句实际更新了多少行

  IF(@MyID IS NOT NULL)
BEGIN
BEGIN TRY
UPDATE DATATABLE
SET Param1=@Param1, Data2=@Data2,...
WHERE MyID=@MyID
IF @@RowCount = 0
BEGIN
SELECT 'No record found...' AS Message
RETURN -1
END
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS 'Message'
RETURN -1
END CATCH

SELECT * FROM DATATABLE WHERE MyID= @@IDENTITY
SET @ResultMessage = 'Succefully Inserted'
SELECT @ResultMessage AS 'Message'
RETURN 0
END

关于sql - SQL 更新未抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com