没有可用数据时没有获得空值

时间:2013-06-12 07:33:30

标签: sql-server-2008

在我的存储过程中,我声明了@account_id,它根据序列号进行设置。 如果SERIAL_NUMBER没有匹配的记录,则@account_id不会获得NULL值。在B部分中提到了条件。 因此,当我传递无效的序列号时,仍然会记录不应该的记录。请指导我解决这个问题。

Section A:
DECLARE @Account_ID INT         
SELECT @Account_ID = ACCOUNT_ID FROM T_ACCOUNT WITH (NOLOCK) WHERE SERIAL_NUMBER = @Serial_Number            

Section B:
WHERE             
  (@Account_ID IS NULL OR Acct.ACCOUNT_ID = @Account_ID)  

1 个答案:

答案 0 :(得分:0)

试试这个,

Section A:
DECLARE @Account_ID INT         
SELECT @Account_ID = ACCOUNT_ID FROM T_ACCOUNT WITH (NOLOCK) WHERE SERIAL_NUMBER = @Serial_Number            

Section B:
WHERE             
  Acct.ACCOUNT_ID = @Account_ID

在您的查询中,您正在使用OR条件,即使变量@AccountId为NULL,查询也会返回所有记录。