I noticed a stored procedure with a bit parameter and the default was false, I have never seen this before in SQL Server. You can do this in a language like c# but not in SQL Server right?
Let's take a look
Create this proc
create procedure prTest @BitTrue bit = true, @BitFalse bit = False, @BitNotFalse bit = -2 as Select @BitTrue as BitTrue, @BitFalse as BitFalse, @BitNotFalse as BitNotFalse GO
Now execute the sored procedure
EXEC prTest
BitTrue BitFalse BitNotFalse
1 0 1
As you can see true gets converted to 1, false gets converted to 0 and any number that is not 0 will be converted to 1 as well
What happens when you pass in false for the parameter that had a default of true?
EXEC prTest @BitTrue = false
BitTrue BitFalse BitNotFalse
0 0 1
How about variables..can you use true and false with bit datatype variables?
Let's try it out
DECLARE @BitTrue bit SET @BitTrue = true
Msg 207, Level 16, State 1, Line 2
Invalid column name 'true'.
DECLARE @BitTrue bit SET @BitTrue = false
Msg 207, Level 16, State 1, Line 3
Invalid column name 'false'.
As you can see you can use true and false with parameters in a proc but not with variables.
No comments:
Post a Comment