【发布时间】:2012-10-17 10:16:45
【问题描述】:
我尝试了 @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
【问题讨论】:
-
我喜欢将 null 视为“未知”——即使它是另一个 null,您也永远不知道是否有任何相同之处。因此,您无法将其与 equals 进行比较,以及为什么特殊的
IS NULL构造。 -
如果对你有用,别忘了点赞并将其标记为已接受
标签: sql stored-procedures if-statement null