Oracle a Parameter with multi value
另外,个人测试,性能不如”将数据插入物理表再JOIN查询“或”每1000次ID做一次IN查询“的总的运行速度。
Solution 1: Use oracle Regex
select t1.field_01,t1.field_02
from t_XXX t1
where Exists
(
select 1 from
(
SELECT TRIM(REGEXP_SUBSTR (:v_id_list, '[^,]+', 1,rownum)) as ID
FROM DUAL
CONNECT BY ROWNUM <= LENGTH (:v_id_list) - LENGTH (REPLACE (:v_id_list, ',','')) + 1
) tmp
where t1.ID= tmp.ID
);
------------------------------------------------------------------------------------------------------------
Solution 2: Use record type
Step1: create record type:
create or replace typemyTableType as table of varchar2 (32767);
----------------------------------------------
Step2:Create function that it convert string to datatable.
Create and replace function var_list(p_string in varchar2 ) return myTableType
as
l_string long default p_string || ',';
l_data myTableType := myTableType();
n number;
begin
loop
exit whenl_string is null;
n := instr(l_string, ',' );
l_data.extend;
l_data(l_data.count) :=
ltrim( rtrim( substr( l_string, 1, n-1 ) ) );
l_string :=substr( l_string, n+1 );
end loop;
return l_data;
end;
----------------------------------------------
Step3: test example
select *
from THE
(
select cast( var_list('abc, xyz, 012') as
mytableType )from dual
) a
------------------------------------------------------
Step4: I Use in code, sql format
Note: :v_id_list’svalue is like :value_1,value_2,..,value_n. and n<=1000
select field_xxx01, t1.field_xxx02
from t_xxxx t1
where Exists
(
select 1 from THE
(
select cast( var_list(:v_id_list) as --select cast( in_list('abc, xyz, 012') as
mytableType ) from dual
) t2
where t1.field_ID = t2.COLUMN_VALUE
);
最新文章
- Java基础知识笔记(二:泛型和枚举)
- CSS易混淆知识点总结与分享-定位与布局
- ecshop适应PHP7的修改
- Objective-C 链式语法的实现
- Effective C++ -----条款16:成对使用new和delete时要采取相同形式
- ubuntu 下创建桌面快捷方式
- Sublime Text : 创建工程
- 论APP测试中黑盒测试方案的重要性?
- How do I place a group of functions or variables in a specific section?
- Web前端开发:SQL Jsp小项目(一)
- Linux江湖01:玩转Linux系统的方法论 (转载)
- linux 第三天11讲
- 技巧集:nginx作代理时,查看请求被转发到哪台服务器
- Linux学习之head命令
- 读取IOS的相应路径
- Oracle 的一张表没有主键,如何映射Hibernate
- 逆序一个8bit的2进制数
- WebService中的WSDL详解 及jmeter测试
- HashMap HashTable和ConcurrentHashMap的区别
- jupyter notebook + frp 实现内容穿透