Как запустить исключение SQL из CATCH это T-SQL? - PullRequest
0 голосов
/ 15 октября 2018

Предполагая, что у меня есть следующая таблица

Create Table [T] ([id] int IDENTITY(1,1) Primary key, [value] varchar(200))

Теперь я хочу установить IDENTITY_INSERT на ON, но если не удается установить его обратно на OFF

Итак, у меня есть следующее:

BEGIN try
  set IDENTITY_INSERT [T] ON
  insert into [T]([id],[value]) values(1,'test')
  set IDENTITY_INSERT [T] OFF
END try
BEGIN catch
  set IDENTITY_INSERT [T] OFF
  --RAISERROR ?
END catch

Теперь я хочу вызвать ошибку в том порядке, в котором вызывающая сторона получит точную ошибку (включая число, аргументы, серьезность и т. Д. Как будто я позвонила на insert into [T]([id],[value]) values(1,'test')В таблице без идентификатора.

Я имею в виду что-то вроде броска исключения из улова

try{
  ...
}
catch(Exception e)
{
  throw e;
}

Как я могу это сделать?

1 Ответ

0 голосов
/ 15 октября 2018

Вы хотите повторно выдать ошибку, которая привела вас в CATCH?Чем просто использовать THROW без каких-либо параметров.Вы не можете использовать RAISERROR для этого, так как вы не можете установить и номер ошибки, и текст, а также не можете ссылаться на системную ошибку.Так что просто THROW сделает это.

...