如何在下面提到的场景中将列表传递给sql查询

时间:2014-07-25 09:32:16

标签: java sql sql-server select plsql

我必须将列表传递给用户选择的存储过程。 那个列表我在java端有一个字符串。 示例:String list="123,467,980";

现在,如果我把这个字符串带到存储过程,那么它将如何工作。

我不能使用它,如下所述:

select * from table_name where code in (list_var)

所以任何人都可以指导我实现此功能的最佳方法。

1 个答案:

答案 0 :(得分:1)

在客户端编写SQL:

String sql = "select * from table_name where code in (" + list_var + ")";

或者,如果您想要的是调用存储过程,实际参数应该是list字符串中表示的参数:

String [] ids = list.split(",");
String sql = "{call yourProcedure(";
for(int i = 0; i < ids.length; i++)
    sql +=  (i == 0?"":",") + "?";
sql += ")}";
CallableStatement cst = con.prepareCall(sql);
for(int i = 0; i < ids.length; i++)
    cst.setInt(i+1, Integer.parseInt(ids[i]));

可替换地:

String sql = "{call yourProcedure(" + list + ")}";
CallableStatement cst = con.prepareCall(sql);