簡體   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