如何检查我的TSQL存储过程是否在存储过程中更新以创建正确的消息?
示例:
ALTER PROCEDURE [dbo].[pUpdate]
@id uniqueidentifier,
@status int,
@message VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
UPDATE [database].[dbo].[user]
SET status = @status
WHERE Id = @id
END
IF (SUCCESSFUL)
BEGIN
@message = 'Success!'
END
有什么方法可以在不再使用参数的情况下检查是否成功?
这是我目前使用的:
SELECT COUNT(*)
WHERE status = @status AND id = @id
还有其他方法吗?我想知道我的知识和参考。谢谢。
答案 0 :(得分:18)
你签出了@@ROWCOUNT
吗?可能是您正在寻找的东西(详见:http://technet.microsoft.com/en-us/library/ms187316.aspx)。基本上它返回受最后一个语句影响的行数。我想如果它不是“成功”,它将是零行。
答案 1 :(得分:4)
ALTER PROCEDURE [dbo].[pUpdate]
@id uniqueidentifier,
@status int,
@message VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
UPDATE [database].[dbo].[user]
SET status = @status
WHERE Id = @id
END
IF (@@ROWCOUNT > 0)
BEGIN
@message = 'Success!'
END
ELSE
BEGIN
@message = 'Not success!'
END
答案 2 :(得分:1)
您可以使用try catch块并将成功或失败记录到表中。
BEGIN TRY
BEGIN TRANSACTION
-- Add Your Code Here
-- Log Success to a log table
COMMIT
END TRY
BEGIN CATCH
-- Log failure to a log table
ROLLBACK
END CATCH
答案 3 :(得分:0)
我会使用@@ERROR
系统变量检查最后一句是否成功(错误#= 0)或不是(错误#> 0):
USE Database;
GO
BEGIN
UPDATE TableName
SET ColumnA = 4
WHERE ColumnB = 1;
END
IF (@@ERROR = 0)
BEGIN
PRINT N'Successfull Update';
GO
END
您可以在此处深入了解Microsoft MSDN:http://technet.microsoft.com/es-es/library/ms188790.aspx