在以前的版本中,我们提出了在像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的。
什么是更好的方式与自定义消息,以提高信息?
这似乎工作:
RAISERROR('My Error Message',0,1)
实际上, 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;
--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,“错误和/或业务错误文本放在这里”)