T SQL - null变量

时间:2012-11-16 19:23:05

标签: sql-server-2008 tsql

我从.aspx.cs页面调用了一个存储过程。我有一个参数,有时无法在调用sproc时发送。因此,我正在做以下事情:

 IF @variable is null
     BEGIN
         ...do this...
     END
 Else 
         ...do that...

我的问题出在IF声明中。据我所知,当我使用以下任何一项时:

  • if @parameterVariable = null
  • if @parameterVariable = ''
  • if @parameterVariable <= 0

什么都没发生!?当我在SSMS中调试sproc时,我发现(即使参数为空(没有用户选择))游标进入并运行ELSE语句中的代码。我做错了吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

使用可选参数:

 CREATE PROCEDURE uspTest
    @param1 varchar(50) = null,

AS
    BEGIN
        SELECT col1, col2
        FROM Table1
        WHERE
                ((@Param1 IS NULL) OR (col1 = @Param1)) 
    END

答案 1 :(得分:3)

if @parameterVariable = null错了。 将其更改为if @parameterVariable IS NULL

这是一个证明这一点的SQL小提琴:http://www.sqlfiddle.com/#!6/6cb42/1

答案 2 :(得分:1)

在SMSS中调试时,必须选中“传递空值”框。否则你的价值是一个空字符串或某些东西。

我一直使用你建议的模式,对我来说效果很好。

答案 3 :(得分:1)

我建议你阅读本页=&gt; ANSI NULLS

实际上if @var = null没有错,一切都取决于ANSI_NULLS的值:)