SQL Sever2000的存储过程,出错的时候,可否根据 @@ERROR 得到出错的信息?

chalsy 2004-10-28 02:24:04
SQL Sever2000的存储过程,出错的时候,可否根据 @@ERROR 得到出错的信息?
如果可以得到的话,取得方法是?

本人是新手,实在不知道怎么查。先谢了!
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chalsy 2004-10-28
  • 打赏
  • 举报
回复
还是先这样。姑且认为可以用了。:P
chalsy 2004-10-28
  • 打赏
  • 举报
回复
试了一下,说RAISERROR 的errorCode必须在 13000 到2147483647之间。
不理解。
chalsy 2004-10-28
  • 打赏
  • 举报
回复
我一直写java+oracle,没有写过SP。
用VB6.0+SQL Server是第一次。实在对不起!

刚才就是看联机帮助才提出来能不能用 RAISERROR (@@ERROR, 16, 1)的。
联机帮助里面这么写的:
構文
RAISERROR ( { msg_id | msg_str } { , severity , state }
[, argument [,...n]]
[ WITH option [ ,...n ] ]

不知道为什么不可以呢?
zjcxc 元老 2004-10-28
  • 打赏
  • 举报
回复
1.你有没有写过程序,如果有写过程序,应该会用到错误处理吧? 比如,VB可以用
on error goto lb_err --出错时,转到lb_err 处理
....查询之类的处理
lb_err:
msgbox error() -- 显示错误


2.RAISERROR (@@ERROR, 16, 1) 根本不能执行,你自己试试就知道了
而且 RAISERROR 是用来抛出自定义错误信息的,具体的你看联机帮助
chalsy 2004-10-28
  • 打赏
  • 举报
回复
多谢高人指点!

不好意思,追加两点疑问。

1,这个“1.可以在前台程序中,直接用错误处理得到错误信息”是什么意思?
是在存储过程以外,根据ErrorId取得错误信息么?

2,出错的时候如果 RAISERROR (@@ERROR, 16, 1) 的话,
是不是抛出去的就是出错的信息而不是errorId?


sdhdy 2004-10-28
  • 打赏
  • 举报
回复
select description from master..sysmessages where error=@@error
zjcxc 元老 2004-10-28
  • 打赏
  • 举报
回复
1.可以在前台程序中,直接用错误处理得到错误信息

2.在查询分析器中可以直接看到错误信息

3.可以用下面的语句得到错误的描述信息.
select * from master..sysmessages where error=@@error

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧