反饋已提交

網絡繁忙

Oracle多值查詢參數個數限制

1. 概述

1.1 版本

報表伺服器版本
功能變更
11.0--

1.2 問題描述

在使用 Oracle 資料查看,若使用 in 過濾,當參數大於1000 個時會出現報錯。具體的報錯資訊是:錯誤程式碼:1301 資料集配置錯誤 Query:ORA-01795: 列表中的最大運算式數為 1000,如下圖所示:

1.3 解決思路

為解決該問題,在Oracle 查詢語句中,可以使用 or 關鍵字更換 in 關鍵字實現同樣的功能。如:

select * from S訂單明細 where 訂單id  in ('10001','10002','10003','10004')

可以被改寫成:

select * from S訂單明細 where 訂單id ='10001' or  訂單id ='10002' or 訂單id='10003' or 訂單id='10004'

2. 操作步驟

2.1 編寫查詢 SQL

建立普通報表,編寫查詢語句 SQL,sql中直接使用“=”號,不使用關鍵字in。

select * from  S訂單明細 where 訂單id='${id}'

如下圖所示:

2.2 配置下拉複選框資料字典

根據項目實際情況配置資料字典,我這裏使用的是公式自動生成的 1 到 1001 的 ID 值。公式為:range(10001,11113)

2.3 配置分隔符

將分隔符設定為'or 訂單id='

2.4 預覽效果

儲存範本,點選「分頁預覽」,效果如下圖所示:


3. 注意事項

若出現:因使用了禁用的特殊關鍵字,懷疑進行了 SQL 攻擊注入攻擊,有特殊需要聯絡系統管理者

則以管理者身分進入數據決策系統,點選「管理系統>安全管理>SQL防注入」,在已選擇的關鍵字中點選\b(?i)or\b欄位,變為未選擇的關鍵字。如下圖所示:

4. 已完成範本

附件列表


主題: 參數應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙