mssql sqlserver 用RAISERROR,能不能只提示,不影响运行


摘要:
RAISERROR 关键字是我们常用的sql错误输出,那么我们如何做到只输出错误,不影响执行呢?
实验环境:sql server 2008 R2


我们深知RAISERROR是一个错误输出函数,在此函数中,我们可通过参数输入:
错误的严重性,及提示消息

RAISERROR (‘用户自定义消息’, 11 , 1)
——–参数说明—–
参数1:自定义消息内容
参数2:消息的错误级别
错误级别说明:
0~10:不中断程序执行顺序,不运行catch代码
11~19:中断脚本运行,运行catch代码
>=20:终止数据库连接
参数3:是一个1~127之间的整数,可以通过此整数查找出相应的错误提示信息代码段

结合上述的RAISERROR参数说明,如果我们想输出错误信息,但是又不想中断程序,那么我们应该将消息的级别定义小于10,就可以达到
提示错误信息,但不影响运行,如下所示:



begin try

select 'ok1' 
RAISERROR (
       N'这是一个错误消息 %s %d.', -- 错误消息定义变量 s d,
       2,            -- 级别,
       1,             -- 状态,
       N'参数一',         -- 第一个参数
       8            -- 第二个参数       
     ) with seterror; 
   

select 'ok2'
end try

begin catch
 select 'error'
end catch 
mssql_sqlserver_raiserror_9445

mssql_sqlserver_raiserror_9445