gpt4 book ai didi

c# - 使用存储过程时如何检查删除/更新操作是否成功完成?

转载 作者:行者123 更新时间:2023-11-30 19:34:08 25 4
gpt4 key购买 nike

假设我们有执行如下简单操作的存储过程:

CREATE PROCEDURE [dbo].[AddNewAuthorReturnID]
(
@Author_Name VARCHAR(MAX),
@Author_ID int OUTPUT
)
AS
SET NOCOUNT OFF;
BEGIN
INSERT INTO AUTHORS (@Author_Name)
VALUES (@Author_Name)
SET @Author_ID = SCOPE_IDENTITY()

SELECT @Author_ID
END

在上述过程中,返回的id表示操作成功。

考虑 DELETE 的等价物。

CREATE PROCEDURE [dbo].[DeleteAuthor]
(
@Author_ID int
)
AS
SET NOCOUNT OFF;
BEGIN
DELETE FROM AUTHORS
WHERE
(Author_ID = @Author_ID)
END
  • 我们怎么知道手术是成功并且 AUTHORS 记录是如果我们使用上面的方法,则成功删除程序?
  • 使用更新操作?

最佳答案

你可以选择@@rowcount

它将显示受影响的行。

例如

CREATE PROCEDURE [dbo].[DeleteAuthor]
(
@Author_ID int
)
AS
SET NOCOUNT OFF;
BEGIN
DELETE FROM AUTHORS
WHERE
(Author_ID = @Author_ID)
SELECT @@ROWCOUNT
END

这也可以应用于更新。

CREATE PROCEDURE [dbo].[UpdateAuthor]
(
@Author_ID int
)
AS
SET NOCOUNT OFF;
BEGIN
UPDATE AUTHORS
SET AuthorName = 'John'
WHERE
(Author_ID = @Author_ID)
SELECT @@ROWCOUNT
END

或者,您可以使用 @@Error 并引发错误 ID @@rowcount > 1(如果您只想更新一行)。

例如

CREATE PROCEDURE [dbo].[DeleteAuthor]
(
@Author_ID int
)
AS
SET NOCOUNT OFF;
BEGIN
DELETE FROM AUTHORS
WHERE
(Author_ID = @Author_ID)

IF @@ROWCOUNT <>1
BEGIN
RAISERROR ('An error occured',10,1)
RETURN -1
END
END

正如 Giorgi 所说,这将作为返回码返回。

关于c# - 使用存储过程时如何检查删除/更新操作是否成功完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093260/

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