Как вы можете использовать INSERT....RETURNING в JDBC callableStatement

Используя операторы Callable, я хочу вернуть столбец серийного типа из моей базы данных, не используя функцию для этого.

Итак, я попытался использовать следующее утверждение, чтобы передать в качестве параметра в мой prepareCall функция моего соединения для генерации CallableStatement,

{? = INSERT INTO schema.tbl (col1, col2, col3, col5) VALUES (?, ?, ?, ?) RETURNING col6}

Вот col6 имеет тип данных как serial,

Но это генерирует исключение:

org.postgresql.util.PSQLException: неправильно сформированная функция или процедура экранируют синтаксис по смещению 5.

Я считаю, что синтаксис, используемый для этого утверждения, неверен. Если это так, что может быть правильным утверждением для этого?

ПРИМЕЧАНИЕ: я не могу использовать connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

ПРИМЕЧАНИЕ: я также знаю, как это можно сделать, объявив функцию в схеме базы данных Postgresql. Пожалуйста, не отвечайте об этом методе, чтобы решить проблему.

Я специально прошу ответить, указав, как можно изменить утверждение, чтобы оно могло работать с CallableStatement

1 ответ

Решение

Из всех комментариев, которые я получил по этому вопросу, просто укажите направление, которое невозможно использовать. INSERT .... RETURNING заявление в качестве параметра к CallableStatement,

Может использоваться как параметр PreparedStatement с помощью Statement.RETURN_GENERATED_KEYS как второй параметр, как я уже говорил ранее в вопросе.

Или его можно использовать, обернув его в хранимую функцию в схеме базы данных Postgresql, а затем используя {? = CALL <STORED FUNCTION>} в качестве параметра в CallableStatement,

Другие вопросы по тегам