RAISEERROR在SQL Server(RaiseError in SQL Server)

2019-08-21 17:51发布

在以前的版本中,我们提出了在像T-SQL的错误:

RAISERROR 50000 'My Error Message'

在最新的SQL Server这样的语法已经停产,并与RAISEERROR()语法代替。

我想有提高的错误的一般方法,最好的我能想出迄今:

sp_addmessage @msgnum = 50001,
              @severity = 10,
              @msgtext = N'My Error Message', @replace = 'REPLACE';
RAISERROR (50001, 10, 1, 'This error message is not displayed')

但我不能去创建的sp_addmessage为每个消息的错误消息,因为有1000的。

什么是更好的方式与自定义消息,以提高信息?

Answer 1:

这似乎工作:

RAISERROR('My Error Message',0,1)


Answer 2:

实际上, RAISERROR已赞成不赞成的THROW因为SQL Server 2012的转到这里获取更多信息。 其中一个更有趣的方面是,它是赖斯ËRROR,而不是赖斯EE RROR导致它被称为“养ROR”在某些圈子。

从BOL示例:

USE tempdb;
GO
CREATE TABLE dbo.TestRethrow
(    ID INT PRIMARY KEY
);
BEGIN TRY
    INSERT dbo.TestRethrow(ID) VALUES(1);
--  Force error 2627, Violation of PRIMARY KEY constraint to be raised.
    INSERT dbo.TestRethrow(ID) VALUES(1);
END TRY
BEGIN CATCH

    PRINT 'In catch block.';
    THROW;
END CATCH;


Answer 3:

--use的S%外卡,让您可以在您从您的任何存储特效的喜欢的任何消息传递:
if Not Exists (Select * from SysMessages where error = 62000) EXEC sp_addmessage @msgnum = 62000, @severity = 16, @msgtext = N'%s', @lang = 'us_english'

--Then在你的SP可以提高此错误:
RAISERROR(62000,16,1,“错误和/或业务错误文本放在这里”)



文章来源: RaiseError in SQL Server