2016-04-07 46 views
0

在SQL查询中,我们使用WHERE IN子句来过滤数据。当我路过35000个字段WHERE IN子句,ExecuteNonQuery抛出查询WHERE IN子句不起作用

对象引用未设置为一个实例异常

我已经在为ExecuteNonQuery excuted其中用于尝试捕捉,但例外而不是逮住电流方法,它捕获父级方法(按钮单击)

如果我从35000计数减少到25000 SQL查询工作正常。请帮忙。

SELECT * FROM COUNTRY WHERE CountryID in ('1','2',......'35000') 

我曾尝试在SQL中使用临时表,同样的错误发生。

IF OBJECT_ID('tempdb..#temp)IS NOT NULL DROP #TEMP 
CREATE TABLE #TEMP 
(CountryID int NULL) 
INSERT INTO #TEMP VALUES ('1') 
. 
. 
. 
INSERT INTO #TEMP VALUES('10') 

SELECT * FROM COUNTRY WHERE CountryID IN(SELECT CountryID from #temp) 

对象空引用错误不是问题,我如何克服SQL查询中的Where In子句问题。什么可能的解决方案来避免SQL查询中的Where in子句。

请帮忙。谢谢。

+1

? – jarlh

+0

可能重复[什么是“对象引用未设置为对象的实例”是什么意思?](http://stackoverflow.com/questions/779091/what-does-object-reject-not-set-to-an -instance-of-an-object-mean) –

+0

在 –

回答

3

使用,而不是加入,这应该DBMS产品是否使用的是工作

SELECT * FROM COUNTRY c INNER JOIN #temp t on c.CountryId=t.CountryId 
+0

我会尝试你的代码。 – Cegone

+0

它为你工作,请标记答案正确:) –

0

为什么不直接使用?

​​

+2

也许有差距? – jarlh

+0

@jarlh我不知道他是如何得到什么ID来选择,但你可以使用'OR','SELECT * FROM COUNTRY WHERE CountryID在1和4之间或CountryID在8和10之间' – crimson589

+0

1到10是例如, ID的将是'12584',65845','75896'像这样.. – Cegone