Можно ли использовать несколько операторов в подготовленном 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
Просто запустив это как два отдельных запроса (в одном соединении), вы должны получить одинаковые результаты.