|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
|
Übersetzung
Original
|
THROW (Transact-SQL)
Unterschiede zwischen RAISERROR und THROW
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
A.Verwenden von THROW zum Auslösen einer Ausnahme
THROW 51000, 'The record does not exist.', 1;
Dies ist das Resultset.
Msg 51000, Level 16, State 1, Line 1
The record does not exist.
B.Verwenden von THROW zum erneuten Auslösen einer Ausnahme
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;
Dies ist das Resultset.
PRINT 'In catch block.';
Msg 2627, Level 14, State 1, Line 1
Violation of PRIMARY KEY constraint 'PK__TestReth__3214EC272E3BD7D3'. Cannot insert duplicate key in object 'dbo.TestRethrow'.
The statement has been terminated.
C.Verwenden von FORMATMESSAGE mit THROW
EXEC sys.sp_addmessage
@msgnum = 60000
,@severity = 16
,@msgtext = N'This is a test message with one numeric parameter (%d), one string parameter (%s), and another string parameter (%s).'
,@lang = 'us_english';
GO
DECLARE @msg NVARCHAR(2048) = FORMATMESSAGE(60000, 500, N'First string', N'second string');
THROW 60000, @msg, 1;
Dies ist das Resultset.
Msg 60000, Level 16, State 1, Line 2
This is a test message with one numeric parameter (500), one string parameter (First string), and another string parameter (second string).