Av någon anledning så körs inte innehållet i if-satsen nedan även om värdet i @personId är NULL. Tror i alla fall att det är så, det skulle kunna vara så att if-satsen körs men att @personId inte blir tilldelad något värde. Hejsan Patrik! Det har du ju väldigt rätt i! Borde man kommit ihåg sen den gamla goda VB-tiden. Får nog finslipa min sökteknik i Books Online, satt och letade där, men hittade inte. Tackar!T-SQL if NULL
När jag kör proceduren med följande sats:
EXEC tryAddResPers NULL, "f", "e", "Karldenkaratondegustavsgatan 18", "55555", "Helsingborg", "swe", 10, 0
Får jag följande felmeddelande:
Cannot insert the value NULL into column 'personId', table 'Laserdomebokning.laserdome.Reservation'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Proceduren:
CREATE PROC tryAddResPers
@personId int,
@fName varchar(80),
@lName varchar(80),
@streetAddress varchar(80),
@zipCode varchar(10),
@country varchar(80),
@city varchar(80),
@nbrOfParticipants int,
@confirmationSent bit
AS
BEGIN TRAN
if @personId = NULL
begin
INSERT INTO laserdome.Person (
fName,
lName,
streetAddress,
zipCode,
city,
country)
VALUES (
@fName,
@lName,
@streetAddress,
@zipCode,
@city,
@country);
set @personId = @@identity
end
INSERT INTO laserdome.Reservation (
nbrOfParticipants,
confirmationSent,
personId)
VALUES (
@nbrOfParticipants,
@confirmationSent,
@personId);
COMMIT
GOSv: T-SQL if NULL
Såhär står det i SQL Server Books Online:
<code>
To determine if an expression is NULL, use IS NULL or IS NOT NULL rather than comparison operators (such as = or !=). Comparison operators return UNKNOWN if either or both arguments are NULL.
</code>
Så jag antar att där ligger ditt problem.Sv: T-SQL if NULL