powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ограничение на строку запроса!
25 сообщений из 39, страница 1 из 2
ограничение на строку запроса!
    #34660353
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет, всем!!!
:)
создала базу в DB2 v9 для хранения XML данных.

По документации в XML полях можно хранить до 2 ГБ информации.
При этом, когда я пытаюсь заполнить таблицу (INSERT), выдается ошибка ограничения на строку:(

SQL0102N Слишком длинная строчная константа (начинается с "'<?xml
version="1.0" encoding="utf-8"?> <document xmlns="http://www.lo").
SQLSTATE=54002

Как можно решить эту проблему?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34660538
DB2Adventurer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как делаете вставку? Из прикладной программы через переменные? Настройки табличного пространства для хранения xml данных какие? Вообще сам загружаемый файл сколько весит?
Скорее всего вы пытаетесь в инсерт вставить все содержимое xml-файла, именно тогда частенько выкидывает аткую ошибку

Делайте так:
Код: plaintext
1.
2.
3.
4.
DB2Command cmd = new DB2Command("insert into xt (id,xmlcomment) valuse(?,?)", connection);
cmd.Paremetres.Add( 1 );
cmd.Parametres.Add(xmldoc.ToString() );
cmd.ExecuteNonQuery();
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34660745
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это моя первая база в DB2 , вот сейчас разбираюсь, что к чему:)

Па задаче мне из Лотуса надо заполнять таблицу XML данными,

Таблица простая:
автор
id INTEGER
doc_id VARCHAR 10
doc_xml XML


Да, получается, что я пытаюсь полность вставить в запрос весь xml:
автор
insert into DB_TEST (doc_id, doc_xml) values ('docid_name','< весь текст ХМЛ>')


РАзмер вставляемого XML получается где-то 52 КВ

В редакторе команд ДБ2 такой запрос тоже не проходит:(

Можно как-то через редактор команд такое сделать?

Или можно ваш пример переделать под хранимую процедуру?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34661430
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DB2Adventurer
Делайте так:
Код: plaintext
1.
2.
3.
4.
DB2Command cmd = new DB2Command("insert into xt (id,xmlcomment) valuse(?,?)", connection);
cmd.Paremetres.Add( 1 );
cmd.Parametres.Add(xmldoc.ToString() );
cmd.ExecuteNonQuery();


По аналогии сделала тоже самое в лотусе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'-- замена в потоке одинарных ковычек на двойные
s_v=Replace(strm_xml.ReadText,Chr(039),Chr(034))

qry.SQL = |insert into DB_TEST (doc_id, doc_xml) |+_
|values(?doc_id?, ?doc_xml?)|
		
Call result.SetParameter (1, "'docid_new'")
Call result.SetParameter (3, "'" & s_v & "'")		
		
result.Execute

Все равно ошибка:"Слишком длинная строчная константа" :(
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34661880
fasafsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а сколько символов в константе. там есть ограничение на длину.
на z/OS 255 байт, на воркстейшн вроде 32K

z/OS -- 'aaa' concat 'bbb' concat 'ccc'
на воркстейшн не нарывался
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34661918
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен, но всё же... когда создавалась таблица хранение данных LONG указывалось в TABLESPACE с размером страницы побольше? Допустим, в 32K?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34661971
fasafsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey PopovНе уверен, но всё же... когда создавалась таблица хранение данных LONG указывалось в TABLESPACE с размером страницы побольше? Допустим, в 32K?


да это не оно. сторчная константа это литерал.

insert into aa values ( 'xxx' )
'xxx' - сторчная константа , длина = 3.
а 'xxx' || 'zzz' это уже не константа.
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662024
Осталось проверить в каком виде Lotus отдает запрос в DB2.
А то может оказаться, что он подставляет значения параметров и уже в таком виде отдает запрос.
Я не специалист по лотусу, нужно посмотреть как он подключается к DB2 и для этого API включить трассировку SQL. Тогда будет ясно что отдается и, возможно, появятся варианты как это исправить.
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662130
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как без лотуса,
просто в Редакторе команд ДБ2
добавить в поле таблицы ХМЛ большое значение???

Потому что даже напрямую через редактор так же выдается ошибка величины константы

МОжет как-то можно через сохраняемые процедуры или импорт из файла? ?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662143
fasafsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jcolorА как без лотуса,
просто в Редакторе команд ДБ2
добавить в поле таблицы ХМЛ большое значение???

Потому что даже напрямую через редактор так же выдается ошибка величины константы

МОжет как-то можно через сохраняемые процедуры или импорт из файла? ?


ну напиши CONCAT где нибудь посередине константы. разбей на две константы поменьше.
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662394
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fasafsaf
ну напиши CONCAT где нибудь посередине константы. разбей на две константы поменьше.

уже просто в редакторе ДБ2 делаю INSERT и вставляемое поле разбиваю при помощи CONCAT
ошибка:
несовместимость данных :(

При этом если значение ХМЛ небольшое, то нормально
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662729
DB2Adventurer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jcolorЭто моя первая база в DB2 , вот сейчас разбираюсь, что к чему:)

Па задаче мне из Лотуса надо заполнять таблицу XML данными,

Таблица простая:
автор
id INTEGER
doc_id VARCHAR 10
doc_xml XML


Да, получается, что я пытаюсь полность вставить в запрос весь xml:
автор
insert into DB_TEST (doc_id, doc_xml) values ('docid_name','< весь текст ХМЛ>')


РАзмер вставляемого XML получается где-то 52 КВ

В редакторе команд ДБ2 такой запрос тоже не проходит:(

Можно как-то через редактор команд такое сделать?

Или можно ваш пример переделать под хранимую процедуру?

Код: plaintext
1.
2.
3.
4.
CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) LANGUAGE SQL
BEGIN
      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END
Название таблицы DB_TEST плохое :)
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34662730
DB2Adventurer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызовите процедуру из лотуса, должно работать.
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665178
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем ошибка при создании процедуры в редакторе команд ДБ2 ??

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) 
      LANGUAGE SQL
BEGIN

      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END

выдается ошибка:
SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT"
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665259
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тот же самый запрос по созданию хранимой процедуры сделала из лотусовского агента - сработало,
хранимая процедура создалась:)
почему невозможно это же делать в редакторе команд?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665286
fasafsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jcolorВ чем ошибка при создании процедуры в редакторе команд ДБ2 ??

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) 
      LANGUAGE SQL
BEGIN

      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END

выдается ошибка:
SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT"


в символе ';'
нужно установить какой-нибудь другой символ в редакторе команд ДБ2
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665320
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot fasafsaf
в символе ';'
нужно установить какой-нибудь другой символ в редакторе команд ДБ2
[/quot]

:(
Пробовала вместо символа ";" - символы "@" и "!"
Ошибка - Обнаружен неправильный элемент :(


А как в ДБ2 запускаюся хранимые процедуры?
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665385
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем может быть ошибка при запуске процедуры:
Код: plaintext
1.
Call JCOLOR.INSERT_XML('id_new', '<h1>text</h1>')

ОШИБКА: Значение несовместимо с типом данных назначения. Имя назначения - "P_DOC_XML
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665753
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Скорее всего он ищет родительский элемент.
2. У меня вылазила такая же ошибка. Видимо он воспринимает '<h1>text</h1> ' как VARCHAR

Попробуйте так
Код: plaintext
Call JCOLOR.INSERT_XML('id_new', XMLPARSE(DAOCUMENT '<root><h1>text</h1></root>'))
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34665755
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jcolorВ чем ошибка при создании процедуры в редакторе команд ДБ2 ??

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) 
      LANGUAGE SQL
BEGIN

      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END

выдается ошибка:
SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-- <ScriptOptions statementTerminator="@" />

CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) 
      LANGUAGE SQL
BEGIN

      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END@
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34666771
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hektor2. У меня вылазила такая же ошибка. Видимо он воспринимает '<h1>text</h1> ' как VARCHAR

Попробуйте так
Код: plaintext
Call JCOLOR.INSERT_XML('id_new', XMLPARSE(DAOCUMENT '<root><h1>text</h1></root>'))


Спасибо :) Так получилось!
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34666788
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hektor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-- <ScriptOptions statementTerminator="@" />

CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) 
      LANGUAGE SQL
BEGIN

      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END@


Все равно ошибка
SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT" после текста
"_DOC_ID , P_DOC_XML)".
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34666985
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot DB2Adventurer]
Код: plaintext
1.
2.
3.
4.
CREATE PROCEDURE INSERT_XML(IN P_DOC_ID VARCHAR( 10 ), IN P_DOC_XML XML ) LANGUAGE SQL
BEGIN
      INSERT INTO JCOLOR.DB_TEST (doc_id, doc_xml)  values (P_DOC_ID , P_DOC_XML);
END
[quot]

создала процедуру и из лотуса пытаюсь занести большие данные
все равно выдет ошибку на длину строковой константы :(
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34667506
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как выглядит запрос, которым вызываете ХП?
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
ограничение на строку запроса!
    #34667589
jcolor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HektorКак выглядит запрос, которым вызываете ХП?
________________________________________________________
________________________________________________________

В агенте Лотуса вызываю ХП следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
	-текст из потока, в котором делаю замену кавычек
	text_xml=Replace(strm_xml.ReadText,Chr( 039 ),Chr( 034 ))

	qry.SQL = |Call JCOLOR.DB_TEST('id_new', XMLPARSE(DOCUMENT ?doc_xml?))|

	Call result.SetParameter ( 1 , "'"& text_xml &"'")
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ограничение на строку запроса!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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