oracle 存储过程中,解决变量使用 in条件时,查询无效问题
2020-07-12 17:42
344 查看
oracle 存储过程中,定义变量之后,使用变量进行 in 条件查询时,会出现查询条件无效的问题
- 表结构
- 表数据
- 解决方法
create or replace type strsplit_type is table of varchar2(30000);
create or replace function strsplit(para_str varchar2, para_split varchar2 := ',') return strsplit_type pipelined is do_idx integer; do_str varchar2(500); do_last varchar2(4000) := para_str; begin if substr(para_str, length(para_str)) = '|' then do_last := substr(para_str, 1, length(para_str) - 1); end if; loop do_idx := instr(do_last, para_split); exit when do_idx = 0; do_str := substr(do_last, 1, do_idx - 1); do_last := substr(do_last, do_idx + 1); pipe row(do_str); end loop; pipe row(do_last); return; end strsplit;
- 传参方式
select * from table(strsplit('n1|n2|n3|n4', '|'));
- 调用
select * from DEPT t where t.dname in (select * from table(strsplit('n1|n2|n3|n4', '|')));
相关文章推荐
- 存储过程使用逗号分隔作为IN参数疑难问题解决方法【真正解决】
- 存储过程内部查询条件约束失效的问题(查询变量与表内字段相同引起)
- oracle的存储过程中使用变量或参数进行模糊查询(like的变量绑定)
- 存储过程内部查询条件约束失效的问题(查询变量与表内字段相同引起)
- oracle 存储过程中date类型变量声明中to_date赋值丢失时分秒问题
- 关于“变量名在批查询或存储过程内部必须唯一”的解决办法
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- SqlServer使用 case when 解决多条件模糊查询问题
- 使用group by查询时orderby无效问题解决
- 解决Oracle 查询条件带中文 出错问题
- Oracle多条件查询分页存储过程
- Oracle 存储过程中查询序列值并用变量接收
- SqlServer使用 case when 解决多条件模糊查询问题
- oracle之存储过程5-查询结果保存到变量中去
- oracle在存储过程中无法查询 v$session、v$process表的解决办法
- Oracle存储过程中执行查询返回的结果集,并使用java代码调用【转】
- SqlServer 多条件查询 [存储过程] 经典例子结合C#的使用
- unp2 13 使用条件变量解决消费者生产者问题
- Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题
- 在mysql存储过程中拼接sql解决in的字段类型不匹配问题