3

SQL Server 2008 でストアド プロシージャを作成しようとしています。プログラミングの経験はありますが、これがわかりません。最初の例ではエラーが発生しますが、2 番目の例ではエラーが発生しません...任意のアイデア...

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' が true で、Age is over 18 が true の場合、これはなぜですか?

どんなフィードバックでも素晴らしいでしょう

4

1 に答える 1