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 の場合、これはなぜですか?
どんなフィードバックでも素晴らしいでしょう