代码之家  ›  专栏  ›  技术社区  ›  Joshua Martell

我可以在JDBC准备的查询中使用多个语句吗?

  •  10
  • Joshua Martell  · 技术社区  · 15 年前

    我想在我的MySQL服务器上执行这样的操作:

    SET @id=(SELECT id FROM lookupTable WHERE field=?);
    (SELECT * FROM table2 WHERE id=@id)
    UNION
    (SELECT * FROM table3 WHERE id=@id)
    UNION
    (SELECT * FROM table4 WHERE id=@id);
    

    这在控制台中可以正常工作,但在我的Java PreparedStatement中不行。它在“;”处抛出语法错误的异常分开陈述。我喜欢这个变量,因为我不必重复lookup子句,但如果需要,我可以重写它。等价连接在UNION子句中也有点尴尬。

    约书亚

    2 回复  |  直到 15 年前
        1
  •  5
  •   ddimitrov    15 年前

    JDBC从未支持解析分隔查询。每次调用都是对数据库的一次访问。也许您可以实现为每个单独的查询执行PreparedStatement.addBatch()的目的,然后执行和检索两个结果集?

        2
  •  2
  •   Mchl    15 年前