在Sybase ASE 12.5格式化RAISERROR消息
-
21-08-2019 - |
题
在存储过程中,我试图测试一个参数为空值或小于1,并且如果是,产生一个错误具有友好的消息,并且该参数的值。
下面是我的代码:
IF @ID IS NULL OR @ID <= 0
BEGIN
RAISERROR 27001 'ID is ?????. ID cannot be null or less then zero.'
RETURN 27001
END
我想什么背面可以是:
“ID为0号不能为空值或小于零。” 要么 “ID为空。ID不能为空或小于零。”
我试图建立一个varchar和提高的错误是这样的:
RAISERROR 27001 @message
但产生错误的 “消息编号27001,传递给RAISERROR,不会在sysmessages目录存在。”
解决方案 2
此工作的,虽然NULL的@ID值作为空字符串写出。
IF @ID IS NULL OR @ID <= 0
BEGIN
DECLARE @msg varchar(250)
SELECT @msg = 'ID is ' + Convert(varchar(15), @ID) + '. Value cannot be null or less then zero'
RAISERROR 27001 @msg
RETURN 27001
END
其他提示
问题是这样的:你需要通过调用的sp_addmessage添加自定义错误#到数据库:
sp_addmessage 27001, "ID is %1. ID cannot be null or less than zero."
可以再调用RAISERROR像你有以上,或像这样(如果你想使用在定义的sp_addmessage消息字符串):
RAISERROR 27001, @ID
编辑:(寻址评语)
首先,如果你愿意只是一个位置参数作为消息寄存器27001:
sp_addmessage 27001, "%1"
二,你不会被迫以显示您已经使用的sp_addmessage注册默认的消息;例如,这应该不管默认消息是什么,以显示一个单独的消息:
RAISERROR 27001 @message
不隶属于 StackOverflow