#java #jdbc #jdbctemplate #sybase-ase15
Вопрос:
Я вызываю хранимую процедуру SQL с помощью SimpleJdbcCall
, и она работает отлично — за исключением того, что производительность слишком низкая.
Чтобы улучшить это, я попытался сгруппировать вызовы, чтобы они выполнялись за один раз, — и я не могу найти способ сделать это.
SimpleJdbcCall
не похоже, чтобы его можно было дозировать.
Так что я нашел jdbcTemplate.batchUpdate(
Я построил параметры как в List<Object[]>
формате, так и с использованием BatchPreparedStatementSetter
, в любом случае, я вижу ту же ошибку:
Incorrect syntax near '@p0'.
Вот инструкция SQL, которую я пытаюсь выполнить в пакетном режиме:
call PortfolioCacheStore ?,?,?,?,?,?,?,?,?,?,?,?,?
Я пробовал это, используя как call, так и exec, а также со скобками и без них:
call PortfolioCacheStore(?,?,?,?,?,?,?,?,?,?,?,?,?)
и т.д.
В любом случае я получаю вышеуказанную ошибку или что-то очень похожее.
Если я возьму запрос, который он строит, и запущу его в клиенте SQL, он будет работать:
exec PortfolioCacheStore 'G','LL','U','B',0,'2021-09-03','2022-01-19',5,'D','FO.tgz',0,'e-local','Arg'
Кто-нибудь знает, что не так с тем, что я делаю, и/или как я могу передать последовательность вызовов хранимых процедур в Sybase из JDBC, пожалуйста?
Комментарии:
1. Какой продукт Sybase вы используете? Пожалуйста, пометьте свой вопрос этим продуктом.
2. Адаптивный сервер Enterprise/15.7/EBF 25127 SMP SP136 /P/x86_64/Корпоративный Linux/ase157sp136x/3955/64-bit/FBO/Пн 19 октября 19:12:00 2015
3. Теперь я попытался удалить все материалы JdbcTemplate и использовать необработанное подготовленное утверждение — чтобы получить точно такую же ошибку!
4. Это наводит на мысль, что сам драйвер выполняет какой-то перевод, который почему-то недействителен.