0

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

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)  
4

1 回答 1

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,您的查询也会返回所有记录。

于 2013-06-12T11:34:21.690 回答