我有以下查询,其中第一个参数本身是子查询
java代码是:
String query = select * from (?) where ROWNUM < ?
PreparedStatement statement = conn.preparedStatement(query)
statement.setString(1, "select * from foo_table")
statement.setInt(2, 3)
当我运行java代码时,我得到一个异常。我可以使用哪些替代方法将第一个子查询statement.setString(1, "select * from foo_table")
作为参数?
答案 0 :(得分:1)
这是不可能的,参数占位符只能表示值,而不能表示对象名称(如表名,列名等),也不能表示子选择或其他查询元素。
您需要使用字符串连接或其他字符串格式化/模板选项动态创建要执行的查询。