select @@ERROR
select * from master.dbo.sysmessages where error =@@ERROR 看看这个对你有没有用。

解决方案 »

  1.   

    还可以自定义消息:declare @ReturnMessage nvarchar(100)
    select @ReturnMessage = N'积分%d排名%d'           EXEC master.dbo.sp_addmessage 50001, 16, @ReturnMessage,'us_english'
                    
    select @ReturnMessage = FORMATMESSAGE(50001, 12,34)EXEC sp_dropmessage 50001,'us_english'
    select * from sysmessages where error=50001
      

  2.   

    thank's: pengdali(大力) &  zqllyh(找感觉) 
       但我的想法是在sp或调用sp中获得并控制此消息,并决定用什么信息返给用户。
       我的代码:
       declare @err_msg as nvarchar(200)
    declare @ret_string as nvarchar(200)
    select @err_msg=description from master.dbo.sysmessages where msglangid=2052 and error=@err
    set @err_msg=replace(@err_msg,'''','"')
    set @err_msg=replace(@err_msg,'%1!','%s') 
    set @err_msg=replace(@err_msg,'%2!','%s')
    set @err_msg=replace(@err_msg,'%3!','%s')
    set @err_msg=replace(@err_msg,'%4!','%s') declare @sql as nvarchar(200)

    if (@s3+@s2+@s1) is not null  
    begin
    EXEC Master.DBO.xp_sprintf @ret_string OUTPUT,@err_msg,@s1,@s2,@s3
    select @ret_string
    return
    end
    if (@s2+@s1) is not null  
    begin
    EXEC Master.DBO.xp_sprintf @ret_string OUTPUT,@err_msg,@s1,@s2 
    select @ret_string
    return
    end
    if (@s1) is not null  
    begin
    EXEC Master.DBO.xp_sprintf @ret_string OUTPUT,@err_msg,@s1 
    select @ret_string
    return
    end
      if (@s1) is null  
    begin
    EXEC Master.DBO.xp_sprintf @ret_string OUTPUT,@err_msg 
    select @ret_string
    return
    end ===========================================================================
    似乎太繁琐了,能简化一下吗?