Java中动态传递数组参数执行下面的 SQL:
select * from employee where STATE in (?)
通常要对数组参数采用拼串方式,操作比较麻烦。
借助 SPL 可以直接使用数组参数传递给 SQL 进行查询。
1. 集算器参数设置:
参数 state 为要传递的州数组。
2. 编写脚本demo.dfx:
A | B | |
1 | =connect("db") | / 连接数据库 |
2 | =A1.query@x("select * from EMPLOYEE where STATE in (?)", state) | / 查询所给州的员工记录。 |
3. 调试执行时,设置数组参数 state=[Arkansas, California, Colorado] 作为 SQL in 的查询条件,执行脚本返回结果:
EID NAME SURNAME GENDER STATE BIRTHDAY HIREDATE
1 Rebecca Moore F California 1974-11-20 2005-03-11
6 Matthew Johnson M California 1984-07-07 2005-07-07
8 Megan Wilson F California 1979-04-19 1984-04-19
23 Joseph Turner M California 1983-08-27 2003-08-27
27 Alexis Jones F California 1983-12-27 2003-12-27
... ... ...
Java中调用这段脚本:
public static void doWork() {
Connection con = null;
java.sql.PreparedStatement st = null;
try{
Class.forName("com.esproc.jdbc.InternalDriver");
con = DriverManager.getConnection("jdbc:esproc:local://");
// 调用脚本 demo.dfx
st=con.createStatement();
st =con.prepareCall("call demo (?)");
st.setObject(1, new String[]{“Arkansas”,"California","Colorado"});
st.execute();
// 获取结果集
ResultSet rst = st.getResultSet();
System.out.println(rst);
}catch(Exception e){
System.out.println(e);
}finally{
// 关闭连接
if (con!=null) {
try {
con.close();
}catch(Exception e) {
System.out.println(e);
}
}
}
}
如果 s="Arkansas, California, Colorado"作为字符串参数传递,可使用 s.split@c() 转换成数组形式进行查询。SPL 支持多样化的输入参数方式进行 SQL 查询。