#java #postgresql #oracle #spring-boot
Вопрос:
Я пытаюсь выполнить миграцию базы данных из oracle в PostgreSQL
, но сталкиваюсь с проблемой при вызове процедуры с использованием базы данных PostgreSQL, но получаю эту ошибку, когда я пытался создать базу данных oracle в тот раз, код работал нормально, не могли бы вы заранее сообщить мне решение, в котором я ошибаюсь.Спасибо заранее.
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate);
simpleJdbcCall.withSchemaName(schema).withProcedureName("PRC_SERVICES");
simpleJdbcCall.declareParameters(new SqlParameter("P_ID", Types.VARCHAR),
new SqlParameter("SERVICE_ID",Types.NUMERIC), new SqlParameter("TEMP_ID",Types.NUMERIC),
new SqlParameter("ENABLE",Types.VARCHAR), new SqlParameter("REMOVE",Types.VARCHAR),
new SqlParameter("URL", Types.VARCHAR), new SqlOutParameter("STATUS",Types.NUMERIC),
new SqlOutParameter("MSG",Types.VARCHAR));
queryParams = baseTransformation.getParamMapForUserServiceProcedure(queryParams);
resultsMap = simpleJdbcCall.execute(queryParams);
result = Integer.parseInt(String.valueOf(resultsMap.get("P_STATUS")));
Исключение
[ИНФОРМАЦИЯ ] 2021-08-31 22:44:27.628 [http-nio-8080-exec-2] Служба поддержки пользователей
- Действие=Запрос на обновление службы пользователей={включить=Y, идентификатор термостата=64, идентификатор службы=3, идентификатор пользователя=1, удалить=Y} [ОТЛАДКА] 2021-08-31 22:44:27.661 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: P_ID [ОТЛАДКА] 2021-08-31 22:44:27.661 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: ИДЕНТИФИКАТОР СЛУЖБЫ [ОТЛАДКА] 2021-08-31 22:44:27.661 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: ИДЕНТИФИКАТОР СЛУЖБЫ [ОТЛАДКА] 2021-08-31 22:44:27.661 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: ВКЛЮЧИТЬ [ОТЛАДКУ] 2021-08-31 22:44:27.661 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: УДАЛИТЬ [ОТЛАДКУ] 2021-08-31 22:44:27.662 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: URL [ОТЛАДКА] 2021-08-31 22:44:27.662 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: СТАТУС [ОТЛАДКА] 2021-08-31 22:44:27.662 [http-nio-8080-exec-2] SimpleJdbcCall — Добавлен объявленный параметр для [PRC_SERVICES]: MSG [ОТЛАДКА] 2021-08-31 22:44:27.662 [в HTTP-НИО-8080-exec и-2] SimpleJdbcCall — JdbcCall называть не компилируется перед выполнением вызывая компилировать [отладка] 2021-08-31 22:44:27.667 на [HTTP-НИО-8080-exec и-2] DataSourceUtils — получение соединения JDBC из источника данных [отладка] 2021-08-31 22:44:40.893 на [HTTP-НИО-8080-exec и-2] CallMetaDataProviderFactory — через орг.springframework.с JDBC.ядро.метаданные.postgrescallmetadaprovider [ОТЛАДКА] 2021-08-31 22:44:40,893 [http-nio-8080-exec-2] CallMetaDataProvider — Получение метаданных для null/mz_ods/prc_services [ПРЕДУПРЕЖДЕНИЕ ] 2021-08-31 22:44:41.868 [http-nio-8080-exec-2] CallMetaDataProvider — Ошибка при получении метаданных для столбцов процедур: org.postgresql.util.PSQLException: Не удается привести к логическому значению: «2» [ОТЛАДКА] 2021-08-31 22:44:41.868 [http-nio-8080-exec — 2] Ссылки на источники данных-Возврат подключения JDBC к источнику данных [ОТЛАДКА] 2021-08-31 22:44:41.868 [http-nio-8080-exec-2] Хранимая процедура SimpleJdbcCall, скомпилированная. Строка вызова [{вызов mz_ods.prc_services()}] [ОТЛАДКА] 2021-08-31 22:44:41.869 [http-nio-8080-exec-2] SimpleJdbcCall — вызов SqlCall для процедуры [PRC_SERVICES] скомпилирован [ОТЛАДКА] 2021-08-31 22:44:41.869 [в HTTP-НИО-8080-exec и-2] CallMetaDataContext — не удается найти соответствующий В или в-параметр Out для «SERV_REMOVE» в параметры, используемые: [] [отладка] 2021-08-31 22:44:41.869 на [HTTP-НИО-8080-exec и-2] CallMetaDataContext — не удается найти соответствующий В или в-параметр Out для «SERV_ENABLE» в параметры, используемые: [] [отладка] 2021-08-31 22:44:41.869 на [HTTP-НИО-8080-exec и-2] CallMetaDataContext — не удается найти соответствующий В или в-параметр Out для «user_id» в используемых параметров: [] [отладка] 2021-08-31 22:44:41.869 [в HTTP-НИО-8080-exec и-2] CallMetaDataContext — не удается найти соответствующий В или в-параметр Out для «SERVICE_ID» в параметры, используемые: [] [отладка] 2021-08-31 22:44:41.869 на [HTTP-НИО-8080-exec и-2] CallMetaDataContext — не удается найти соответствующий В или в-параметр Out для «THERMOSTAT_ID» в параметры, используемые: [] [отладка] 2021-08-31 22:44:41.869 на [HTTP-НИО-8080-exec и-2] CallMetaDataContext соответствия [SERV_REMOVE, SERV_ENABLE, ИД_ПОЛЬЗОВАТЕЛЯ, SERVICE_ID, THERMOSTAT_ID, REPORT_URL] с [] [отладка] 2021-08-31 22:44:41.869 [http-nio-8080-exec — 2] Найдено соответствие callmetadatactext для [] [ОТЛАДКА] 2021-08-31 22:44:41.870 [http-nio-8080-exec-2] SimpleJdbcCall
- Следующие параметры используются для вызова {вызов mz_ods.prc_services()} с {} [ОТЛАДКА] 2021-08-31 22:44:41.870 [http-nio-8080-exec-2] JdbcTemplate — Вызов хранимой процедуры [{вызов mz_ods.prc_services()}] [ОТЛАДКА] 2021-08-31 22:44:41.870 [http-nio-8080-exec-2] DataSourceUtils — Извлечение соединения JDBC из источника данных
Комментарии:
1. Образец кода, который вы опубликовали, и сообщения об исключениях, похоже, не связаны. Одно для
USER_SERVICES
, а другое дляPRC_SERVICES
.2. Не удается привести к логическому значению: «2» — это ошибка. Но я не вижу логического параметра.
3. для изменения имени при отправке кода, но в реальном сценарии prc_services использует имя процедуры, которое я использую, и получаю исключение выше