在一个存储过程中,我发现如果它成功插入一条记录,它返回 0。如果它在主键违规(被捕获并忽略)时失败,它返回 -4。-4 来自哪里?
下面是存储过程:
ALTER PROCEDURE [dbo].[pSetUserItemLike]
@UserID int
,@ItemID int
AS
BEGIN
SET NOCOUNT ON;
-- for exception handling
DECLARE @ErrorMessage nvarchar(max)
DECLARE @ErrorSeverity int
DECLARE @ErrorState int
BEGIN TRY
INSERT dbo.UserItemLikes
(
UserID
,ItemID
)
VALUES
(
@UserID
,@ItemID
)
END TRY
BEGIN CATCH
IF ERROR_NUMBER() <> 2627 -- IGNORE PRIMARY KEY VIOLATION
SELECT
@ErrorMessage = ERROR_MESSAGE() + ' Line ' + cast(ERROR_LINE() as nvarchar(5))
, @ErrorSeverity = ERROR_SEVERITY()
, @ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); …
Run Code Online (Sandbox Code Playgroud)