[英]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.