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

标签 java sql sql-server select plsql

我必须将列表传递给用户选择的存储过程。 该列表我在 java 末尾以字符串形式存在。 示例:String list="123,467,980";

现在,如果我按原样将该字符串放入存储过程,那么它将如何工作。

我无法使用它,如下所述:

select * from table_name where code in (list_var)

谁能指导我实现此功能的最佳方法是什么。

最佳答案

在客户端编写 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);

关于java - 在下面提到的场景中如何将列表传递给sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24952475/

相关文章:

Java调用API : Call the C function back from the java code

sql - 从自定义电子邮件表发送电子邮件的代理作业

sql-server - 仅更新插入行的触发器

sql - 如何检查光标是否存在(打开状态)

sql-server - 在 Management Studio 2005 中编写所有存储过程的脚本

Java mysql 错误 : Could not find or load main class lib\mysql-connector-java-5. 1.25-bin.jar

java - org.hibernate.hql.ast.QuerySyntaxException : unexpected token

java - 将 SQL 从 Java 代码中分离出来

mysql - 优化困境

java - 使用 JEDIS 进行类似于 SQL 的插入和选择