Тестирование операции ВВОДА на swagger, я получил PreparedStatementCallback; плохая грамматика SQL

#java #sql #rest #spring-boot #jdbctemplate

#java #sql #отдых #весенняя загрузка #jdbctemplate

Вопрос:

 [UPDATE AR.BATCH_JOB_CONFIG_DTLS SET KEY_NM = ?, KEY_VAL = ?, KEY_DESC = ?, LAST_UPDT_USER_CD = ?, LAST_UPDT_DTM = CURRENT TIMESTAMP WHERE  BATCH_JOB_CONFIG_DTLS_ID = ? amp;amp; BATCH_JOB_CONFIG_ID = ? ]; 
 
 nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10145][10844][3.69.66] Invalid parameter 7: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815
 

BATCH_JOB_CONFIG_DTLS_ID ЯВЛЯЕТСЯ PK и BATCH_JOB_CONFIG_ID является FK для таблицы. Оба типа Long . вы видите проблему?

Комментарии:

1. У вас есть только шесть заполнителей ( ? ) в инструкции. Обычно они нумеруются, начиная с 1 (я не знаю, почему это не 0). Так что не было бы 7, просто 1, 2, 3, 4, 5, и 6..

2. Где должен быть размещен 7-й заполнитель?

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

4. Я отправляю это [ { «batchJobConfigDtlsId»: 600, «batchJobConfigId»: 0, «keyNm»: «fff», «keyVal»: «striwwwng», «keyDesc»: «sss», «lastUpdtUserCd»: «ddd» } ]

Ответ №1:

Проблема заключалась в ключевом слове ‘amp;amp;’ после предложения WHERE. Это должно быть ‘И’.