Как вы можете использовать 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
,