1

@somevalue = null を試してみましたが、その時はうまくいきました。しかし、今は機能していません。値がnullかどうかを確認する方法は? 簡単に言えば、@existPerson が null の場合、値をデータベースに INSERT する必要があります。ただし、存在する場合は -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 
4

5 に答える 5

5

これは

  IF @existPerson is null

SQLで、値がnullであるか、必要以上にないかを確認する場合は、is nullまたはis not nullの代わりに= null<> null

于 2012-10-17T10:18:32.907 に答える
3

何かを看板nullと比較することはできません。=常にになりますunknownISそのために演算子を使用する必要があります。

IF @existPerson IS null
于 2012-10-17T10:18:47.977 に答える
0

例:-

SELECT p_ID FROM Student WHERE s_NIC IS NULL
于 2012-10-17T10:18:14.050 に答える
0

他の方法、ISNULL ( check_expression , replacement_value )

于 2012-10-17T10:18:59.290 に答える
0
 if @existsperson is null
   insert(...)
 else
     return -2;
于 2012-10-17T10:25:10.673 に答える