用处:提供和C#一样的错误处理机制,不过没有finally块.try catch可以嵌套使用.如果错误被catch中处理过,后面的语句去继续运行.
语法:
begin try
...
end try
begin catch
...
end catch
简单示例:
begin
try
begin try
exec sp_executesql N ' select * from tables '
end try
begin catch
print ' execute sql error '
end catch
insert into Region(RegionID, RegionDescription)
values ( 1 , ' xxx ' )
-- select 1/0
end try
begin catch
select
error_number() as errornumber,
error_severity() as errorseverity,
error_state() as errorstate,
error_procedure() as errorprocedure,
error_line() as errorline,
error_message() as errormessage;
end catch
begin try
exec sp_executesql N ' select * from tables '
end try
begin catch
print ' execute sql error '
end catch
insert into Region(RegionID, RegionDescription)
values ( 1 , ' xxx ' )
-- select 1/0
end try
begin catch
select
error_number() as errornumber,
error_severity() as errorseverity,
error_state() as errorstate,
error_procedure() as errorprocedure,
error_line() as errorline,
error_message() as errormessage;
end catch
注意error相关的函数要放在catch的第一行使用.
在catch中可以使用raiserror函数,将错误通知调用的应用程序,如ADO.NET
begin
try
exec sp_executesql N ' select * from tables '
end try
begin catch
print ' execute sql error '
raiserror 130001 ' error message return to caller application '
end catch
exec sp_executesql N ' select * from tables '
end try
begin catch
print ' execute sql error '
raiserror 130001 ' error message return to caller application '
end catch