У меня есть запрос Oracle SQL, который успешно работает в разработчике SQL. Запрос выбирает несколько столбцов, использует LPAD, RPAD, операторы CASE и несколько Union All Claouses. /> Для своего DataType < /p>
< /blockquote>
Я подозреваю, что проблема связана с конкатенацией строки или типами данных по умолчанию в JDBC, потому что некоторые из моих столбцов могут создавать очень длинные строки. В разработчике SQL он работает нормально, потому что Oracle автоматически обрабатывает ограничения Varchar2 внутри, но Spring Boot/JDBC кажется более строгим.
Вопрос:
Как я могу изменить свой запрос так, чтобы он работал как в разработчике SQL, так и при выполнении Spring Boot/JDBC? Есть ли рекомендуемый способ обработать длинные сознательные строки или союз всех результатов в Oracle с Java? Чтобы проиллюстрировать структуру, я включаю уменьшенную версию, которая использует одни и те же конструкции (LPAD, RPAD, CASE, String Concatenation и т. Д.). Прекрасно.SELECT "a"
|| "b"
|| "c"
|| "d"
|| "e"
|| "f"
|| "g"
|| "h"
|| "i"
|| "j"
|| "k"
|| "l"
|| "m"
FROM (
SELECT
'8' AS "a",
LPAD('012', 5, '0') AS "b",
RPAD(' ', 4) AS "c",
LPAD('012', 5, '0') AS "d",
SUBSTR(a.col1, 1, 3) AS "e",
'0' AS "f",
RPAD(' ', 1) AS "g",
LPAD(SUBSTR(RTRIM(LTRIM(coll)), 12, 11), 11) AS "h",
RPAD(' ', 2) AS "i",
LPAD(TO_CHAR(TO_DATE(col2, 'yyyy/mm/dd'), 'ddmmyy'), 6) AS "j",
RPAD(' ', 50) AS "k",
CASE
WHEN col3 < 0
THEN LPAD(ABS(col5) * 100 || 'd', 14, 0)
ELSE LPAD(ABS(col7) * 100 || 'c', 14, 0)
END AS "l",
RPAD(' ', 16) AS "m",
col3 || '-' || col1 AS "n"
FROM tab1 c
JOIN tab3 a ON a.col11 = c.col12
JOIN tab2 d ON c.col14 || c.col15 || c.col16 || c.col17 =
d.col18 || d.col19 || d.col20 || d.col21
JOIN tab3 n ON 1=1
WHERE c.col9 IN (:codeclient)
AND a.col10 = '000'
AND c.col13 IN ('000', '005', '008')
)
Подробнее здесь: https://stackoverflow.com/questions/797 ... length-too
Запросы запроса в разработчике SQL, но сбои в Spring Boot с ORA-00910 (длина слишком длинная для типа данных) ⇐ JAVA
Программисты JAVA общаются здесь
1758636730
Anonymous
У меня есть запрос Oracle SQL, который успешно работает в разработчике SQL. Запрос выбирает несколько столбцов, использует LPAD, RPAD, операторы CASE и несколько Union All Claouses. /> Для своего DataType < /p>
< /blockquote>
Я подозреваю, что проблема связана с конкатенацией строки или типами данных по умолчанию в JDBC, потому что некоторые из моих столбцов могут создавать очень длинные строки. В разработчике SQL он работает нормально, потому что Oracle автоматически обрабатывает ограничения Varchar2 внутри, но Spring Boot/JDBC кажется более строгим.
[b] Вопрос: [/b]
Как я могу изменить свой запрос так, чтобы он работал как в разработчике SQL, так и при выполнении Spring Boot/JDBC? Есть ли рекомендуемый способ обработать длинные сознательные строки или союз всех результатов в Oracle с Java? Чтобы проиллюстрировать структуру, я включаю уменьшенную версию, которая использует одни и те же конструкции (LPAD, RPAD, CASE, String Concatenation и т. Д.). Прекрасно.SELECT "a"
|| "b"
|| "c"
|| "d"
|| "e"
|| "f"
|| "g"
|| "h"
|| "i"
|| "j"
|| "k"
|| "l"
|| "m"
FROM (
SELECT
'8' AS "a",
LPAD('012', 5, '0') AS "b",
RPAD(' ', 4) AS "c",
LPAD('012', 5, '0') AS "d",
SUBSTR(a.col1, 1, 3) AS "e",
'0' AS "f",
RPAD(' ', 1) AS "g",
LPAD(SUBSTR(RTRIM(LTRIM(coll)), 12, 11), 11) AS "h",
RPAD(' ', 2) AS "i",
LPAD(TO_CHAR(TO_DATE(col2, 'yyyy/mm/dd'), 'ddmmyy'), 6) AS "j",
RPAD(' ', 50) AS "k",
CASE
WHEN col3 < 0
THEN LPAD(ABS(col5) * 100 || 'd', 14, 0)
ELSE LPAD(ABS(col7) * 100 || 'c', 14, 0)
END AS "l",
RPAD(' ', 16) AS "m",
col3 || '-' || col1 AS "n"
FROM tab1 c
JOIN tab3 a ON a.col11 = c.col12
JOIN tab2 d ON c.col14 || c.col15 || c.col16 || c.col17 =
d.col18 || d.col19 || d.col20 || d.col21
JOIN tab3 n ON 1=1
WHERE c.col9 IN (:codeclient)
AND a.col10 = '000'
AND c.col13 IN ('000', '005', '008')
)
Подробнее здесь: [url]https://stackoverflow.com/questions/79771530/query-runs-in-sql-developer-but-fails-in-spring-boot-with-ora-00910-length-too[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия