Asa*_*sad 4 c# sql-server stored-procedures tableadapter
假设我们有存储过程执行这样的简单操作:
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
Run Code Online (Sandbox Code Playgroud)
在上面的过程中,返回的id是操作成功的标志。
考虑等价于DELETE。
CREATE PROCEDURE [dbo].[DeleteAuthor]
(
@Author_ID int
)
AS
SET NOCOUNT OFF;
BEGIN
DELETE FROM AUTHORS
WHERE
(Author_ID = @Author_ID)
END
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这也可以应用于更新。
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
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 @@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
Run Code Online (Sandbox Code Playgroud)
正如 Giorgi 所说,这将作为返回码返回。