SQL Server存储过程 - 如果没有数据,返回给变量的内容是什么?

时间:2010-11-30 19:05:33

标签: sql-server

如果在MS SQL Server 2008存储过程中使用以下代码:

    DECLARE @PROD_ID VARCHAR(20)

    SELECT @PROD_ID = MYTABLE.PROD 
    FROM MYTABLE
    WHERE MYTABLE.DEVID = @DEVCODE

DEVCODE不存在,PROD_ID包含什么?我试过打印它,但它会打印出似乎是空间的东西。但是,测试它的空间失败。此外,测试NULL失败。或者,我应该以不同的方式测试空白吗?

感谢阅读 BBZ

2 个答案:

答案 0 :(得分:1)

如果@PROD_ID不存在,

@DEVCODE应保持为空。

您是否正确使用

进行测试
...@PROD_ID IS NULL... 

而不是试图测试

...@PROD_ID = NULL... 

哪个不正确?

答案 1 :(得分:1)

如果@DEVCODE id不存在,则@PROD_ID将保持为空。

您不能在SELECT @PROD_ID = ...语句中使用COALESCE或ISNULL,因为它根本不会返回任何记录。

但是,你可以这样做:

DECLARE @PROD_ID VARCHAR(20)

SELECT @PROD_ID = MYTABLE.PROD 
FROM MYTABLE
WHERE MYTABLE.DEVID = @DEVCODE

IF (@PROD_ID is null) BEGIN
  -- do something
END