在查詢乙個in中超過1000個引數的時候報錯了,查詢了下,這邊總結的解決方法有兩種,一種是通過union all,一種是迴圈將引數寫到in中再用or連線語句。方法還有幾種但是暫未嘗試,先不進行記錄。開發中主要用了第二種方法。
第一種,寫法上沒有個數限制,不過還是需要建個臨時表,語句如下:
select *
from table
where id in (
select 1 from dual
union all
select 2 from dual
……)
第二種,通過where or,將in中的引數控制在1000之內
if (e.selectkeyvalues.count > 0)
else if ((i % 999) == 0 && i > 0)
else
}where += " and (質量特性編碼 in ( " + wherekey + " ))";
}
Oracle資料庫中IN引數個數超過1000的問題
1.用表關聯代替in 2.在where條件中使用子查詢,如 select from b where c in select d from e 這樣的形式。順便在這裡擴充一下in和exists。在sql優化中,in與exists的區別就是,當括號裡面值少的話,用in效率會比較高,值多的話用exists...
ORACLE 儲存過程 返回行數超過查詢行數
oracle建立了乙個儲存過程 就是簡單的通過id 返回 名字 但是總是報錯返回行數超過查詢行數 原因如下 存在錯誤 create orreplace procedure show proc deptno int,v name out varchar is begin select d.dname ...
引數化查詢,集合做引數。(Oracle)
在進行資料庫查詢時,為了防止sql注入,我們通常會採用引數化的查詢。在引數化查詢過程中,當遇到 in exist等子句時無法正常工作。針對這個問題,下面有一種變向的解決方案 oracle select id from lv.test join table xmlsequence extract xm...