繁体   English   中英

存储过程SQL raiserror无法正常工作

[英]Stored procedure SQL raiserror not working

我正在尝试在SQL Server 2008中创建一个存储过程。我有编程经验,但我无法弄明白......也许我只是看着它太久了! 第一个例子提出错误,但第二个例子没有...任何想法......

ALTER PROC master_class
--EXTERNAL VARIABLES
   @iSFname varchar(20),
   @iSLname varchar(20),
   @iDOB date
AS
--INTERNAL VARIABLES
DECLARE @AGE int
DECLARE @ReturnValue int
DECLARE @class nvarchar

--get student age
SELECT @AGE = 32        
SELECT @class = 'science'

    --ERROR CHECKS      
    --check ward age rule
    IF (@AGE > 18)
        BEGIN           
            RAISERROR('This Person cannot be submitted to this class!', 16, 1)
            RETURN 99
        END

然后执行

  EXECUTE [School].[dbo].[master_class] 'john', 'o connor', '08-01-1981'

以上将返回'此人不能提交给本课程!'。 如果我将if条件更改为

IF (@AGE > 18 AND @class = 'science')
        BEGIN           
            RAISERROR('This Person cannot be submitted to this class!', 16, 1)
            RETURN 99
        END

它将在不应该执行的时候执行!!!! ...为什么这样,当@class ='science'为真且Age超过18时为真

任何反馈都会很棒

nvarchar没有长度默认为nvarchar(1)奇怪的是, varchar缺省值为30,并且两个默认至30在cast

Declare class nvarchar = 'science'

Select @class

's'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM