存过返回错误消息问题.

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.
...全文
96 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-02-13 04:34
社区公告
暂无公告