在存储过程中,我试图测试一个参数为空值或小于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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top