2016-04-07 202 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