Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ограничение на строку запроса! / 25 сообщений из 39, страница 1 из 2
16.07.2007, 11:15
    #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
16.07.2007, 11:55
    #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
16.07.2007, 12:38
    #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
16.07.2007, 15:09
    #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
16.07.2007, 16:37
    #34661880
fasafsaf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
а сколько символов в константе. там есть ограничение на длину.
на z/OS 255 байт, на воркстейшн вроде 32K

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


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

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

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

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

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

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


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

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

При этом если значение ХМЛ небольшое, то нормально
...
Рейтинг: 0 / 0
17.07.2007, 03:16
    #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
17.07.2007, 03:17
    #34662730
DB2Adventurer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
Вызовите процедуру из лотуса, должно работать.
...
Рейтинг: 0 / 0
17.07.2007, 17:58
    #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
17.07.2007, 18:26
    #34665259
jcolor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
Тот же самый запрос по созданию хранимой процедуры сделала из лотусовского агента - сработало,
хранимая процедура создалась:)
почему невозможно это же делать в редакторе команд?
...
Рейтинг: 0 / 0
17.07.2007, 18:35
    #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
17.07.2007, 18:45
    #34665320
jcolor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
[quot fasafsaf
в символе ';'
нужно установить какой-нибудь другой символ в редакторе команд ДБ2
[/quot]

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


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

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

Попробуйте так
Код: plaintext
Call JCOLOR.INSERT_XML('id_new', XMLPARSE(DAOCUMENT '<root><h1>text</h1></root>'))
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
18.07.2007, 05:53
    #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
18.07.2007, 12:55
    #34666771
jcolor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
Hektor2. У меня вылазила такая же ошибка. Видимо он воспринимает '<h1>text</h1> ' как VARCHAR

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


Спасибо :) Так получилось!
...
Рейтинг: 0 / 0
18.07.2007, 12:58
    #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
18.07.2007, 13:39
    #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
18.07.2007, 15:18
    #34667506
Hektor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение на строку запроса!
Как выглядит запрос, которым вызываете ХП?
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
18.07.2007, 15:33
    #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
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ограничение на строку запроса! / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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