Можно ли использовать несколько операторов в подготовленном JDBC-запросе?

Я хотел бы выполнить что-то вроде этого на моем сервере MySQL:

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

Это отлично работает с консоли, но не с моего Java PreparedStatement. Он генерирует исключение с синтаксической ошибкой в ​​';' разделяя утверждения. Мне нравится переменная, потому что мне не нужно повторять предложение lookup, но я мог бы переписать его, если это необходимо. Эквивалентный JOIN немного неудобен в предложениях UNION.

Спасибо,

Joshua

Ответ 1

JDBC никогда не поддерживал разбор разграниченных запросов. Каждый вызов - это одна поездка в базу данных. Возможно, вы можете достичь того, что вы хотели сделать PreparedStatement.addBatch() для каждого отдельного запроса, а затем выполнить и извлечь два набора результатов?

Ответ 2

Просто запустив это как два отдельных запроса (в одном соединении), вы должны получить одинаковые результаты.