powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Выгрузка XML из Oracle c помощью java (spring)
35 сообщений из 35, показаны все 2 страниц
Выгрузка XML из Oracle c помощью java (spring)
    #39678253
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно есть spring приложение которое вызывает функцию возвращаю xml в clob'е. Само взаимодействие с базой данных происходит через DAO (java классы генерятся с помощью jooq-codegen). Все работает хорошо ровно до тех пор функция не пытается вернуть clob размером около 50 килобайт. И тогда spring приложение выдает :
exception EBUG ReportsDao:130 - jOOQ; bad SQL grammar [begin ? := "WORK"."REPORTS_SERVER"."GETDOCUMENT"("IDNSF" => ?, "TYPEDOCUMENT" => ?); end;]; nested exception is java.sql.SQLException: ORA-06502: PL/SQL: ошибка числа или значения ORA-06512: на line 1


C clob'ами меньшего размерами все работает на ура

Собственно вопрос, насколько правильно мое предположение что все дело в размере и как с этим бороться?
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678255
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS

сама функция в sql developer работает на ура и возвращает clob большого размера без проблем
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678259
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример кода доступа кидайте. То, что генерятся через какую-то тулзу, ни о чем не говорит

сообщение об ошибке говорит о том, что неправильно определились типы данных. Скорее всего CLOB пытаются в PL/SQL VARCHAR2 преобразовать

Размер 50 Кб - очень странно. Вроде ограничение на размер PL/SQL VARCHAR2 - 32 Kb.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678263
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

Дык функция возвращает clob а не varchar2...
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678264
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975
Код: sql
1.
begin ? := "WORK"."REPORTS_SERVER"."GETDOCUMENT"("IDNSF" => ?, "TYPEDOCUMENT" => ?); end;



В этом коде ? - переменные привязки. Тип первой переменной должен быть CLOB, а у Вас похоже VARCHAR2.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678265
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678266
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975Leonid Kudryavtsev,

Дык функция возвращает clob а не varchar2...
То, что ф-ция возврашает CLOB, это понятно. С этим все хорошо )))
Другое дело, что Вы пытаетесь получить от Oracle. А здесь, похоже, у Вас (или в генераторе) ошибки. Вы пытаетесь получить VARCHAR2.

p.s.
PL/SQL VARCHAR2 отличается от "чисто" SQL VARCHAR2. В Oracle PL/SQL может быть 32 Kb, а "чисто" SQL максимум 4 K. (возможно цифры не точные, корректное описание ограничений смотрите в документации)
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678267
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

кхм
function getDocument(idnsf number, typeDocument varchar2) return clob;
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678269
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример JAVA кода вызова данной ф-ции. Там явно ошибки.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678273
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторLeonid Kudryavtsev,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	/**
	 * Call <code>WORK.REPORTS_SERVER.GETDOCUMENT</code>
	 */
	public static java.lang.String getdocument(org.jooq.Configuration configuration, java.lang.Number idnsf, java.lang.String typedocument) {
		ru.twokom.dao.generated.packages.reports_server.Getdocument f = new ru.twokom.dao.generated.packages.reports_server.Getdocument();
		f.setIdnsf(idnsf);
		f.setTypedocument(typedocument);

		f.execute(configuration);
		return f.getReturnValue();
	}



Этот код генерится плагином, это не мой код.
Сам код класса

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
/**
 * This class is generated by jOOQ
 */
package ru.twokom.dao.generated.packages.reports_server;

/**
 * This class is generated by jOOQ.
 */
@javax.annotation.Generated(value    = { "http://www.jooq.org", "3.1.0" },
                            comments = "This class is generated by jOOQ")
@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Getdocument extends org.jooq.impl.AbstractRoutine<java.lang.String> {

	private static final long serialVersionUID = -962596309;

	/**
	 * The parameter <code>WORK.REPORTS_SERVER.GETDOCUMENT.RETURN_VALUE</code>. 
	 */
	public static final org.jooq.Parameter<java.lang.String> RETURN_VALUE = createParameter("RETURN_VALUE", org.jooq.impl.SQLDataType.CLOB);

	/**
	 * The parameter <code>WORK.REPORTS_SERVER.GETDOCUMENT.IDNSF</code>. 
	 */
	public static final org.jooq.Parameter<java.math.BigDecimal> IDNSF = createParameter("IDNSF", org.jooq.impl.SQLDataType.NUMERIC);

	/**
	 * The parameter <code>WORK.REPORTS_SERVER.GETDOCUMENT.TYPEDOCUMENT</code>. 
	 */
	public static final org.jooq.Parameter<java.lang.String> TYPEDOCUMENT = createParameter("TYPEDOCUMENT", org.jooq.impl.SQLDataType.VARCHAR);

	/**
	 * Create a new routine call instance
	 */
	public Getdocument() {
		super("GETDOCUMENT", ru.twokom.dao.generated.Work.WORK, ru.twokom.dao.generated.packages.ReportsServer.REPORTS_SERVER, org.jooq.impl.SQLDataType.CLOB);

		setReturnParameter(RETURN_VALUE);
		addInParameter(IDNSF);
		addInParameter(TYPEDOCUMENT);
	}

	/**
	 * Set the <code>IDNSF</code> parameter IN value to the routine
	 */
	public void setIdnsf(java.lang.Number value) {
		setNumber(ru.twokom.dao.generated.packages.reports_server.Getdocument.IDNSF, value);
	}

	/**
	 * Set the <code>IDNSF</code> parameter to the function to be used with a {@link org.jooq.Select} statement
	 */
	public void setIdnsf(org.jooq.Field<? extends java.lang.Number> field) {
		setNumber(IDNSF, field);
	}

	/**
	 * Set the <code>TYPEDOCUMENT</code> parameter IN value to the routine
	 */
	public void setTypedocument(java.lang.String value) {
		setValue(ru.twokom.dao.generated.packages.reports_server.Getdocument.TYPEDOCUMENT, value);
	}

	/**
	 * Set the <code>TYPEDOCUMENT</code> parameter to the function to be used with a {@link org.jooq.Select} statement
	 */
	public void setTypedocument(org.jooq.Field<java.lang.String> field) {
		setField(TYPEDOCUMENT, field);
	}
}
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678286
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что можно сказать - дебажить.
Кодегенератор слова про CLOB воткнул. Т.ч. скорее всего Ваше описание для генератора - правильное.

То, что падает ошибка, похоже бага внутри org.jooq.impl.AbstractRoutine<java.lang.String>

IMHO
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678292
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или написать в саппорт )))
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678316
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975,

В JDBC с этим нет проблем см. Java API for XMLType
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678357
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick,

у нас тут зоопарк решений на этой технологии...
переход на jdbc не решение на данный момент
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678388
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975Garrick,

у нас тут зоопарк решений на этой технологии...
переход на jdbc не решение на данный момент

В любом случае, Вы (библиотека) все равно используете JDBC. Проблема только в том, что где-то ошибка. Нужно отладчиком смотреть какие реально вызовы JDBC исполняются и попытаться понять, почему это так.

Тут существует два методологически разных способа решения:
1. Совестско-российский, хаккерский - найти ошибку (отладчиком) и ее исправить
2. Зарубежный - найти чесловека который сделал данную ошибки и заставить его ее исправить (обратиться в саппорт)

IMHO & AFAIK
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678390
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickOleg_SP1975,

В JDBC с этим нет проблем см. Java API for XMLType
Вот у автора задача значительно более простая. У него "просто" CLOB

А вот с XML Type проблем может быть выше крыши ((( Там в сложных случаях совсем все "не радостно" (((
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678418
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975Garrick,

у нас тут зоопарк решений на этой технологии...
переход на jdbc не решение на данный момент

JDBC драйвер уже используется в вашем приложении. Ничто не мешает вам использовать для вызова этой процедуры именно JDBC без всяких прослоек и это никак не повлияет на работу других частей приложения.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678423
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevGarrickOleg_SP1975,

В JDBC с этим нет проблем см. Java API for XMLType
Вот у автора задача значительно более простая. У него "просто" CLOB

А вот с XML Type проблем может быть выше крыши ((( Там в сложных случаях совсем все "не радостно" (((
У него не просто CLOB, а XML в CLOB'е. По ссылке, приведённой мной выше, такие случаи описываются.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678440
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickУ него не просто CLOB, а XML в CLOB'е. По ссылке, приведённой мной выше, такие случаи описываются.

а какая разница что внутри clob?
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678483
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975а какая разница что внутри clob?
Может быть потому, что oracle.sql.CLOB != java.lang.String.
Вы же надеюсь не станете использовать int для чтения из базы DECIMAL?
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678486
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На что мапируются данные в бизнес слое - глубоко пофиг.
А что реально передается в JDBC и Oracle - пока покрыто глубоким мраком. Нужно дебагить.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678496
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНа что мапируются данные в бизнес слое - глубоко пофиг.
А что реально передается в JDBC и Oracle - пока покрыто глубоким мраком. Нужно дебагить.

Когда я вижу вот это... у меня возникают сомнения в корректности этого кода

Код: java
1.
public static final org.jooq.Parameter<java.lang.String> RETURN_VALUE = createParameter("RETURN_VALUE", org.jooq.impl.SQLDataType.CLOB);



Хотя никогда не работал с jOOQ и не знаю, что там у неё за Parameter такой и что делает createParameter, но какое-то там по счёту чувство мне подсказывает, что это не правильно.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678514
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick
Код: java
1.
public static final org.jooq.Parameter<java.lang.String> RETURN_VALUE = createParameter("RETURN_VALUE", org.jooq.impl.SQLDataType.CLOB);



Хотя никогда не работал с jOOQ и не знаю, что там у неё за Parameter такой и что делает createParameter, но какое-то там по счёту чувство мне подсказывает, что это не правильно.
а что тут вызывает Ваше сомнение?
SQLDataType.CLOB - лично мне вызывает подозрение, что бага где-то в другом месте (((
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678717
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

весь вопрос в каком
потому что java падает вот на этой строке
Код: java
1.
f.execute(configuration);
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678744
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevа что тут вызывает Ваше сомнение?
SQLDataType.CLOB - лично мне вызывает подозрение, что бага где-то в другом месте (((

То, что CLOB пытаются запихнуть в String.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678883
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickLeonid Kudryavtsevа что тут вызывает Ваше сомнение?
SQLDataType.CLOB - лично мне вызывает подозрение, что бага где-то в другом месте (((

То, что CLOB пытаются запихнуть в String.

Честно говоря, лично я криминала не вижу. Да и по смыслу, CLOB это как раз очень большая строка (в отличие от BLOB, которые последовательность байт, а не строка)

В любом случае, нужно просто пройтись дебагером. IDEA точно в пошаговом режиме в декопилированные классы заходить умеет, с Eclipse'ом не уверен.

Да и ошибка, не Java'вская, а Oracle'вая. Т.е. с вероятностью 95% не верно вызывается registerOutParameter

IMHO в любом случае, корректный маппинг (что понимать под корректный, конечно вопрос спорный) - задача библиотеки.

Маппинг CLOB в String IMHO вполне корректная операция, если не привышены лимиты языка. В данном случае, лимиты java.String не превышены.

С этом библиотекой не работал, т.ч. лично мне пофиг. Но пройтись дебагером и найти ошибку, задаача максимум на день. IMHO & AFAIK


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
package test_jvm;

public class StringMaxLength {
	public static void main( String[] args ) {
		String String1K;
		String s;
		StringBuilder sb;
		int i;
		// Build 1 K string
		sb = new StringBuilder();
		for ( i =0; i<1024; i++ ) {
			sb.append( '*' );
		}
		String1K = sb.toString();
		// Build a very long String
		// up to 1 GB
		sb = new StringBuilder();
		for ( i=0; i<1024; i++ ) {
			sb.append( String1K );
			s = sb.toString();
			System.out.println( "String with length=" + s.length() + " OK" );
		}

		return ;
	}
}


...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39678990
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДа и ошибка, не Java'вская, а Oracle'вая.

Вы не угадали. Ошибка программиста, который неправильно использует JOOG. Поскольку я сам не пользуюсь JOOG, то затрудняюсь указать её конкретнее. А может, у JOOG есть ограничение. Смотреть документацию по JOOG.

авторIMHO в любом случае, корректный маппинг (что понимать под корректный, конечно вопрос спорный) - задача библиотеки.

А его настройка - задача программиста.

автор Да и по смыслу, CLOB это как раз очень большая строка

Это рассуждение прямо подстрекает сделать ошибку в Java коде (а потом ещё можно будет поругать за неё Oracle).

авторМаппинг CLOB в String IMHO вполне корректная операция, если не привышены лимиты языка. В данном случае, лимиты java.String не превышены.

И это рассуждение тоже. В Oracle автоматическое преобразование из CLOB в строку работает без проблем при размере CLOB до 4K. При большем размере может возникнуть проблема от не читания документации. Но вообще можно загрузить в программу CLOB любого размера.
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679028
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скатываемся в offtopic (((

Вы не угадали. Ошибка программиста, который неправильно использует JOOG. Поскольку я сам не пользуюсь JOOG , то затрудняюсь указать её конкретнее. А может, у JOOG есть ограничение. Смотреть документацию по JOOG.

So do I.
Т.ч. без тестового примера и дебага до проблемной строки, разговор становится безпредметный.
Лично у меня дебажит библиотеку, которой я не пользуюсь, желания пока нет )))

Это рассуждение.....

ВикипедияСтроковый тип
В программировании, строковый тип (англ. string «нить, вереница») — тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.
....

Документации Oracle Overview of Character Datatypes
The character datatypes store character (alphanumeric) data in strings , with byte values corresponding to the character encoding scheme, generally called a character set or code page.
....
This section includes the following topics:
CHAR Datatype
VARCHAR2 and VARCHAR Datatypes
Length Semantics for Character Datatypes
NCHAR and NVARCHAR2 Datatypes
Use of Unicode Data in Oracle Database
LOB Character Datatypes
LONG Datatype
....
VARCHAR2 and VARCHAR Datatypes

The VARCHAR2 datatype stores variable-length character strings...maximum string length (in bytes or characters) between 1 and 4000 bytes for the VARCHAR2 column....
...
LOB Character Datatypes

The LOB datatypes for character data are CLOB and NCLOB. They can store up to 8 terabytes of character data (CLOB) or national character set data (NCLOB).
...
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT213


И это рассуждение тоже. В Oracle автоматическое преобразование из CLOB в строку работает без проблем при размере CLOB до 4K. При большем размере может возникнуть проблема от не читания документации. Но вообще можно загрузить в программу CLOB любого размера.

Не правда.

Без проблем до размера, которого позволяет тип varchar2. В PL/SQL - 32 Kb, в SQL - 4 Kb. (конкретные точные лимиты смотреть в документации) + разумеется учет кодировки

при чем тут "не читание документации" вообще не понятно
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679113
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче я решил проблему поблоковым чтением этого клоба (по 32к).
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679289
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНе правда.

Без проблем до размера, которого позволяет тип varchar2. В PL/SQL - 32 Kb, в SQL - 4 Kb. (конкретные точные лимиты смотреть в документации) + разумеется учет кодировки

при чем тут "не читание документации" вообще не понятно

Сейчас объясню. Вы стали фантазировать, что CLOB и текстовая строка это почти одно и то же. Но не надо путать фантазии и знание, на что я указал. Поэтому надо читать документацию. CLOB существенно отличается от строки приёмами программирования для работы с ним (которые зависят ещё и от СУБД). Вы привели фрагмент документации. Это хорошо, что вы её читаете. Но приведённый фрагмент не имеет никакого отношения к делу.

Конкретно.

Беру пример - поле CLOB my_clob в таблице my_table

В Oracle SQL Developer делаю запрос

SELECT my_clob, DBMS_LOB.GETLENGTH (my_clob) AS my_clob_length FROM my_table

вижу результаты (которые Oracle SQL Developer правильно показывает как текст, значит можно преобразовать). Но если я согласно вашему мнению преобразую CLOB в Varchar2 функцией TO_CHAR
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions179.htm#i1006717][функцией TO_CHAR/url]

То при длине CLOB больше 4000 возможно возникновение ошибки:

сообщение об ошибкеORA-22835: Размер буфера недостаточен для преобразования CLOB в CHAR или BLOB в RAW (фактически: 4652, максимум: 4000)
22835. 00000 - "Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: %s, maximum: %s)"
*Cause: An attempt was made to convert CLOB to CHAR or BLOB to RAW, where
the LOB size was bigger than the buffer limit for CHAR and RAW
types.
Note that widths are reported in characters if character length
semantics are in effect for the column, otherwise widths are
reported in bytes.
*Action: Do one of the following
1. Make the LOB smaller before performing the conversion,
for example, by using SUBSTR on CLOB
2. Use DBMS_LOB.SUBSTR to convert CLOB to CHAR or BLOB to RAW.
==================



Видим предел 4000, а не 32K, как вам казалось.
Эту проблему можно решить на стороне Oracle, а можно в Java. Про Oracle чейчас писать не буду. А в Java c CLOB надо работать как с CLOB, а не как со String. Пример с использованием JDBC:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Connection conn = ...
Statement stmt = conn.createStatement();
ResulSet rs = stmt.executeQuery ("SELECT my_clob, DBMS_LOB.GETLENGTH (my_clob) AS my_clob_length FROM my_table");
while (rs.next) {
//String myClobStr = rs.getString("my_clob"); //ghb CLOB  больше 4000 возникает вышеприведённая ошибка ORA-22835
Clob myClob = rs.getClob("my_clob");//Правильно

// теперь из Clob можно получить строку
String myClobStr = myClob..getSubString(1, (int) myClob.length()).trim();

//поток данных для чтения (что полезно для экономии памяти)
InputSream myClobInp = myClob.getCharacterStream();

}


}
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679404
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan M,

+++

Во-во! Сначала они CLOB'ы в строки читают, а потом баланс в Double свести пытаются. А потом из-за таких кто-то будет наезжать на Java, что она какая-то не такая и вообще фу...
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679417
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick,

какие мы плохие

PS
не кто не кидает в Java какашками если вы не заметили
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679436
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SP1975 не кто не кидает в Java какашками если вы не заметили
Я не про тут, я вообще...
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39679439
Oleg_SP1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick,

а вообще любой язык программирования это инструмент которым надо уметь пользоваться и соответственно когда возникают вопросы их надо где то задавать
...
Рейтинг: 0 / 0
Выгрузка XML из Oracle c помощью java (spring)
    #39680008
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в своём программном примере я напрасно не привёл подробность: после использования Clob надо освобождать:

Clob clob = null;

clob = resultset.getClob ("my_clob");

//читаем данные из clob

if (clob != null)
clob.free(); //это помещать в finally {}, чтобы наверняка выполнилось.

показанными способами можно прочитать CLOB любого размера.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Выгрузка XML из Oracle c помощью java (spring)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]