在我的存储过程中,我声明了@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)
答案 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,查询也会返回所有记录。