Запросы запроса в разработчике SQL, но сбои в Spring Boot с ORA-00910 (длина слишком длинная для типа данных)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запросы запроса в разработчике SQL, но сбои в Spring Boot с ORA-00910 (длина слишком длинная для типа данных)

Сообщение Anonymous »

У меня есть запрос 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»