存过返回错误消息问题.

mhhm 2006-02-13 04:34:42
在查询分析器中执行下列SQL:
DECLARE @RC int
DECLARE @sheet_lot varchar(8000)
DECLARE @err varchar(255)
SELECT @sheet_lot = 'SFC01A0507250002_001'
EXEC @RC = [dbo].[opro_sfccreatecontrol] @sheet_lot, @err OUTPUT
DECLARE @PrnLine nvarchar(4000)
PRINT '存储过程: dbo.opro_sfccreatecontrol'
SELECT @PrnLine = '返回代码 = ' + CONVERT(nvarchar, @RC)
PRINT @PrnLine
PRINT ' 输出参数: '
SELECT @PrnLine = '@err = ' + isnull( CONVERT(nvarchar, @err), '<NULL>' )
PRINT @PrnLine

结果:
服务器: 消息 2601,级别 14,状态 3,过程 opro_sfccreatecontrol,行 230
不能在具有唯一索引 'IX_oscm_control_1' 的对象 'oscm_control' 中插入重复键的行。
语句已终止。
存储过程: dbo.opro_sfccreatecontrol
返回代码 = 2601
输出参数:
@err = 2601

现问题是 我想要得到的返回值
@err=不能在具有唯一索引 'IX_oscm_control_1' 的对象 'oscm_control' 中插入重复键的行。
不是只有消息号2601.
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cansum396 2006-03-22
  • 打赏
  • 举报
回复
make
rouqu 2006-02-15
  • 打赏
  • 举报
回复
Master库中的一些SP都不可视 我想 当年开发SQL的人肯定知道怎么写 呵呵
OracleRoob 2006-02-14
  • 打赏
  • 举报
回复
mark
mhhm 2006-02-14
  • 打赏
  • 举报
回复
SQL 2000 下可有如何实现类似 ERROR_MESSAGE()
rouqu 2006-02-13
  • 打赏
  • 举报
回复
那样就不会了。。。
zjcxc 2006-02-13
  • 打赏
  • 举报
回复
-- 如果你用sql 2005, 那就可以用下面的方法得到(可能对ERROR_MESSAGE做进一步分解, 以得到你想要的形式)

CREATE TABLE tb(id int UNIQUE)
GO

BEGIN TRY
INSERT tb SELECT 1 UNION ALL SELECT 1
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER(), ERROR_MESSAGE()
END CATCH
GO

DROP TABLE tb
rouqu 2006-02-13
  • 打赏
  • 举报
回复
Or select * from master..sysmessages where error = 2601
zjcxc 2006-02-13
  • 打赏
  • 举报
回复
楼上的那个得不到 'IX_oscm_control_1' ,'oscm_control' 这个信息的.
rouqu 2006-02-13
  • 打赏
  • 举报
回复
use master
select * from sysmessages where error = 2601

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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