如何从 CATCH it T-SQL 中触发 SQL 异常?
How to fire up SQL Exception from CATCH it T-SQL?
假设我有以下 table
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')
非身份 table.
我的意思是像从 catch 中抛出异常
try{
...
}
catch(Exception e)
{
throw e;
}
我该怎么做?
是否要重新引发将您带入 CATCH 的错误?而不是仅使用不带任何参数的 THROW。您不能为此使用 RAISERROR,因为您不能同时设置错误编号和文本,也不能引用系统错误。所以,只需 THROW 即可。
假设我有以下 table
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')
非身份 table.
我的意思是像从 catch 中抛出异常
try{
...
}
catch(Exception e)
{
throw e;
}
我该怎么做?
是否要重新引发将您带入 CATCH 的错误?而不是仅使用不带任何参数的 THROW。您不能为此使用 RAISERROR,因为您不能同时设置错误编号和文本,也不能引用系统错误。所以,只需 THROW 即可。