欢迎投稿

今日深度:

PreparedStatement中in子句的处理

PreparedStatement中in子句的处理


PreparedStatement中in子句的处理
 
测试环境: Oracle 10g
 
1.原理
 
1
select * from table(split('a,b,c'))
结果:
1
a
2
b
3
c
2.结论
对于类似:
 
1
select * from xxx_table where xxx_column in ('xxa', 'xxb', 'xxc')
可动态传入in子句参数
1
select * from xxx_table where xxx_column in (select * from table(split(?)))
1
PreparedStatement stmt = conn.prepareStatement(sql);
2
stmt.setObject(1, "xxa,xxb,xxc");
 
附split函数:
 
 
01
create or replace type split_tbl as table of varchar(32767);
02
/
03
 
04
create or replace function split
05
(
06
  p_list varchar2,
07
  p_del varchar2 := ','
08
) return split_tbl pipelined
09
is
10
  l_idx    pls_integer;
11
  l_list    varchar2(32767) := p_list;
12
  l_value    varchar2(32767);
13
begin
14
  loop
15
    l_idx := instr(l_list,p_del);
16
    if l_idx > 0 then
17
      pipe row(substr(l_list,1,l_idx-1));
18
      l_list := substr(l_list,l_idx+length(p_del));
19
    else
20
      pipe row(l_list);
21
      exit;
22
    end if;
23
  end loop;
24
  return;
25
end split;
26
/
 

www.htsjk.Com true http://www.htsjk.com/oracle/21919.html NewsArticle PreparedStatement中in子句的处理 PreparedStatement中in子句的处理 测试环境: Oracle 10g 1.原理 1 select * from table(split(a,b,c)) 结果: 1 a 2 b 3 c 2.结论 对于类似: 1 select * from xxx_table where xxx_column in (...
相关文章
    暂无相关文章
评论暂时关闭