有人知道SQL的RAISERROR的怎么应用吗?

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:22:07
帮助 我看过了
但是看不懂
第一个参数是自定义的参数是什么意思,错误号又是怎么回事啊?该如何定义呢
第二个和第三个参数 该怎么写 级别和状态分别有什么含义?
最好举个例子 并明确说明三个参数的含义
不胜感激!
有追加的赏分的!
谢谢

RAISERROR ( { msg_id | msg_str } { , severity , state }
[ , argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]

上面是引用了联机丛书中raiserror的定义。
其实看了定义也就不该说第几个了,但是按照常用的理解,就按照你的思路来说吧。

第一个参数:msg_id,自定义错误号应该大于50000,以前在vb中实现了一把,raiserror的这个错误号确实可以被捕获的,看看sql中多少函数跟vb想象,这点就可以理解了;msg_str,错误信息提示,里面可以用格式修饰符,将后面的参数数组相对应的值返回。相应于vb,err.number可以取msg_id,而err.description可以取msg_str了。

第二个参数:这里通常是定义安全级别跟错误状态的,相应的可以参考联机丛书,我就不粘出来了。

第三个参数:[ , argument [ ,...n ] ],参数组,对应msg_str进行输出。

举一个操作pubs中表jobs的例子,在表中搜索max_lvl大于1000的信息,如果没有则返回一条错误:
-------------------------------------------------------------
use pubs
declare @count int
select @count=count(*) from jobs where max_lvl>1000
if @count=0
raiserror('有%d个max_lvl>1000的工作',16,1,@count)
-------------------------------------------------------------

执行后将返回:
-------------------------------------------------------------
服务器: 消息 50