我试过@somevalue = null并且它在那个时候工作了。但现在它不起作用。如何检查值是否为空? 简而言之,我需要做的是,如果@existPerson等于null,则将值插入数据库。但如果它存在则返回-2。我已经检查了数据库,确保没有与@nic = 100相同的值。即便如此,它返回我-2。可能的原因是什么?非常感谢!
CREATE PROCEDURE [dbo].[addStudent]
@stuName varchar(50),
@address varchar(100),
@tel varchar(15),
@etel varchar(15),
@nic varchar (10),
@dob date
AS
BEGIN
SET NOCOUNT ON;
DECLARE @currentID INT
DECLARE @existPerson INT
SET @existPerson = (SELECT p_ID FROM Student WHERE s_NIC = @nic);
IF @existPerson = null
BEGIN
INSERT INTO Person (p_Name, p_RegDate, p_Address, p_Tel, p_EmergeNo, p_Valid, p_Userlevel)
VALUES (@stuName, GETDATE(), @address, @tel, @etel, 0, 'Student' );
SET @currentID = (SELECT MAX( p_ID) FROM Person);
INSERT INTO Student (p_ID, s_Barcode, s_DOB, s_NIC) VALUES (@currentID , NULL, @dob, @nic);
return 0;
END
ELSE
return -2;
END
答案 0 :(得分:5)
这应该是
IF @existPerson is null
在SQL中如果要检查值是否为空,则需要使用is null
或is not null
代替= null
或<> null
答案 1 :(得分:3)
您无法将null
的内容与=
符号进行比较。它始终是unknown
。您必须使用IS
运算符:
IF @existPerson IS null
答案 2 :(得分:0)
对于Ex: -
SELECT p_ID FROM Student WHERE s_NIC IS NULL
答案 3 :(得分:0)
其他方式,ISNULL ( check_expression , replacement_value )
答案 4 :(得分:0)
if @existsperson is null
insert(...)
else
return -2;