|  | 1 SQL Server的系统变量@@ERROR    在不同的DBMS系统中,提供不同的系统变量名称检查错误信息。SQL Server专用的系统变量为@@ERROR@@ERROR = 0 表示执行正确。
 @@ERROR 0 表示执行错误。
 每当完成 一条SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 
        T-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。
 由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。
 例如,在一个 UPDATE 语句中检测查冲突(错误 #547)。
 USE pubs
 GO
 UPDATE authors
 SET au_id = '172 32 1176'
 WHERE au_id = "172-32-1176"
 IF @@ERROR = 547
 print "A check constraint violation occurred"
 2. SQL Server错误消息
 *当SQL Server运行或T-SQL语句编译、执行过程中遇到错误时,它将显示一条错误消息,向用户报告发生的错误号、错误级别及错误原因等内容。
 *错误消息存储在sysmessages系统表中,每条消息由错误消息号、错误严重级别、状态和错误描述信息四部分组成。
 *错误描述信息有两类:一类是静态文本,另一类包含了类似C语言printf函数中的格式控制变量,如%d, %c ,%s等。这类错误消息在报告给用户之前,需要用SQL 
        Server所接收到参数值替换格式控制变量,动态生成完整的错误描述信息。
 
  例1: SELECT * FROM abc
 将产生208号错误,208号错误的描述信息是:
 Invalid object name '%.*ls'.
 在显示错误信息前,SQL Server将自动用所操作的表名abc替换%.*ls变量,最终向用户发出的错误消息为:Server: Msg 208, 
        Level 16, State 1, Line 1
 Invalid object name 'abc'.
 3. 建立用户自定义错误消息
 *SQL Server提供了一种添加用户自定义错误消息的机制,使用系统存储过程sp_addmessage将用户自定义的错误消息存放到sysmessage表中。
 *用户定义的错误消息号应大于50000。
 *可以用RAISERROR语句从sysmessages表中检索信息,并把它发送给相应的用户。
 系统存储过程sp_addmessage的语法格式:
 sp_addmessage { number, severity, 'msg' }
 [, 'language' ]
 [, 'with_log' ]
 [, 'replace' ]
 
  例2:添加一条错误号为50002的错误消息。 sp_addmessage 50002, 16, 'This is a test%s'
 *RAISERROR语句返回用户所定义的错误消息,并且设置系统标识来记录所发生的错误:其语法格式如下:
 RAISERROR ( { msg_id | msg_str }
 { ,severity ,state }
 [, argument[,...n]] )
 [WITH option]
 
  例3:下面语句将产生50002号错误消息,并用字符串"aaa"替换格式控制变量%s: RAISERROR (50002, 16, -1, "aaa")
 4 删除用户定义的错误消息
 当用户不再使用所定义的错误消息时,可使用系统存储过程sp_dropmessage删除。sp_dropmessage的格式为:
 sp_dropmessage [@msgnum =] message_number
 [ , [@lang = ] 'language']
 
  例4:下面语句删除前面所定义的50002号错误消息: sp_dropmessage 50002
   |  |