Могу ли я использовать несколько операторов в подготовленном запросе JDBC? - PullRequest
10 голосов
/ 29 июля 2010

Я хотел бы выполнить что-то вроде этого на моем сервере 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.Выдает исключение с синтаксической ошибкой в ​​';'разделяя заявления.Мне нравится переменная, потому что мне не нужно повторять условие поиска, но я мог бы переписать ее при необходимости.Эквивалент JOIN тоже немного неудобен с предложениями UNION.

Спасибо,

Джошуа

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

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

2 голосов
/ 29 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...