Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 没有可用数据时不获取空值_Sql Server 2008 - Fatal编程技术网

Sql server 2008 没有可用数据时不获取空值

Sql server 2008 没有可用数据时不获取空值,sql-server-2008,Sql Server 2008,在我的存储过程中,我声明了@account_id,它根据序列号进行设置。 如果序列号没有匹配的记录,@account\u id不会获得空值。B节中提到的条件。 所以,当我传递无效的序列号时,仍然会出现不应该出现的记录。请引导我解决这个问题 Section A: DECLARE @Account_ID INT SELECT @Account_ID = ACCOUNT_ID FROM T_ACCOUNT WITH (NOLOCK) WHERE SERIAL_NUMBER = @Se

在我的存储过程中,我声明了@account_id,它根据序列号进行设置。 如果序列号没有匹配的记录,@account\u id不会获得空值。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)  
试试这个

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

如果
@Account\u ID
部分
A
中没有匹配行,则
@Account\u ID
将为
NULL
。未对变量进行赋值,且其先前的值为
NULL
。但是你的
WHERE
说如果是这样的话,把B部分的所有行都带回来。B部分的WHERE与A部分有什么关系?在A节中已经有WHERE子句!?嗨,Martin,如果给出的序列号无效,如何不获取任何记录。您是否可以建议将
@帐户\u ID为空或
从您的第二个
位置中删除。或者,如果您需要区分它是
NULL
作为未赋值和
NULL
作为参数值显式传入,那么您可以在赋值后立即检查
@@ROWCOUNT
。我不明白为什么您有两个几乎相同的问题,两个问题间隔仅2小时。另一个