powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Миграция с IB. Слишком длинный запрос.
10 сообщений из 10, страница 1 из 1
Миграция с IB. Слишком длинный запрос.
    #34926035
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас стоит задача миграции части БД с IB на DB2 (iSeries), работа идет через ODBC драйвер. В приложении некоторые запросы проходят, а некоторые "падают" с ошибкой:
Код: plaintext
SQL0101 - Оператор SQL слишком длинный или слишком короткий.
Попытался запустить это в Навигаторе, ответ был таков:
Run SQL Scripts
SQL State: 54010
Vendor Code: -101
Message: [SQL0101] Оператор SQL слишком длинный или слишком сложный. Причина . . . . : Длина или сложность оператора SQL превышает допустимое ограничение. Код причины: 3.
...
3 - Сумма длин столбцов, типы которых отличны от LOB, в определении списка выбора, таблицы или представления или в пользовательской функции таблицы превышает 32766, либо определение содержит LOB и сумма длин, указанных в предложении ALLOCATE для полей переменной и постоянной длины, превышает 32740. При наличии столбцов переменной длины или столбцов, допускающих пустые значения, максимально допустимая длина будет еще меньше.
...
Пробежался по ODBC настройкам... выставил везде, где можно максимальный размер - ошибка осталась... Как победить?
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34931317
ValPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема не в ODBC. Родной Navigator то-же не берет запрос. Неужели нельзя настроить?
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34931825
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не то с самим текстом запроса. Надо бы его тоже привести.
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34932628
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT SELECT_ID,AS_NAME,FACT_NAME,FNUMBER AS NUMBER,FTYPE,VLENGTH,NAME4USER,PATTERN,MASK,PARAM,FMODE,DVALUE,REF_TYPE,REF_NAME,REF_SELECT,REF_KEY,REF_FIELD,VISIBLE,MANDATORY,READONLY,KEYED,UNIQUED,DEPENDED,NIFE,CING,REF_REF,BASE_REF,NOCOPY,NOMODIFY,EVALUATED,AUTOVIEW,EVENTED,FCLASS,VPREC,ANCHORS,B_FORM,B_QUERY,B_KEY_FIELD,C_H,C_W,C_X,C_Y,IS_BORDER,L_IS_BTN,L_X,L_Y,R.SLIST as REF_DESCR

FROM DICFIELD F
left outer join DICREFER R on R.NUM=F.REF_REF

WHERE (SELECT_ID=:SELECT_ID) and (FCLASS= 1 )

ORDER BY AS_NAME
SELECT_ID - любое число... было 35, если это интересно.

Структура:
Код: plaintext
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.
CREATE TABLE DICFIELD (
  FACT_NAME VARCHAR( 255 ),
  FNUMBER INTEGER,
  FTYPE INTEGER DEFAULT  0  NOT NULL,
  VLENGTH INTEGER,
  PATTERN VARCHAR( 24 ),
  MASK VARCHAR( 24 ),
  FMODE INTEGER DEFAULT  0  NOT NULL,
  REF_NAME VARCHAR( 24 ),
  REF_KEY VARCHAR( 24 ),
  REF_FIELD VARCHAR( 24 ),
  VISIBLE CHAR( 1 ) DEFAULT  0  NOT NULL,
  MANDATORY CHAR( 1 ) DEFAULT  0  NOT NULL,
  READONLY CHAR( 1 ) DEFAULT  0  NOT NULL,
  KEYED CHAR( 1 ) DEFAULT  0  NOT NULL,
  UNIQUED CHAR( 1 ) DEFAULT  0  NOT NULL,
  DEPENDED CHAR( 1 ) DEFAULT  0  NOT NULL,
  NIFE CHAR( 1 ) DEFAULT  0  NOT NULL,
  CING CHAR( 1 ) DEFAULT  0  NOT NULL,
  REF_REF INTEGER,
  BASE_REF INTEGER,
  REF_TYPE INTEGER DEFAULT  0  NOT NULL,
  NOCOPY CHAR( 1 ) DEFAULT  0  NOT NULL,
  NOMODIFY CHAR( 1 ) DEFAULT  0  NOT NULL,
  SELECT_ID VARCHAR( 24 ) NOT NULL,
  AS_NAME VARCHAR( 64 ) NOT NULL,
  NAME4USER VARCHAR( 255 ),
  PARAM VARCHAR( 2000 ),
  DVALUE VARCHAR( 2000 ),
  EVALUATED CHAR( 1 ) DEFAULT  0  NOT NULL,
  AUTOVIEW CHAR( 1 ) DEFAULT  0  NOT NULL,
  FCLASS INTEGER DEFAULT  1  NOT NULL,
  VPREC INTEGER NOT NULL,
  REF_SELECT VARCHAR( 24 ),
  EVENTED CHAR( 1 ) DEFAULT  0  NOT NULL,
  ANCHORS INTEGER DEFAULT  3  NOT NULL,
  C_X INTEGER DEFAULT  0  NOT NULL,
  C_Y INTEGER DEFAULT  0  NOT NULL,
  C_W INTEGER DEFAULT  0  NOT NULL,
  C_H INTEGER DEFAULT  0  NOT NULL,
  L_X INTEGER DEFAULT  0  NOT NULL,
  L_Y INTEGER DEFAULT  0  NOT NULL,
  IS_BORDER SMALLINT DEFAULT  0  NOT NULL,
  L_IS_BTN SMALLINT DEFAULT  0  NOT NULL,
  B_FORM VARCHAR( 64 ),
  B_QUERY VARCHAR( 64 ),
  B_KEY_FIELD VARCHAR( 64 )
)


CREATE TABLE DICREFER (
  NUM INTEGER NOT NULL,
  NAME VARCHAR( 64 ) NOT NULL,
  NAME_TYPE INTEGER DEFAULT  0  NOT NULL,
  VALUE_TYPE INTEGER DEFAULT  0  NOT NULL,
  SLIST BLOB SUB_TYPE  0  SEGMENT SIZE  80 ,
  MNEMO VARCHAR( 10 )
)
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34932647
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что выше - это было в IB, а теперь, то что генерирует DB2
Код: plaintext
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.
CREATE TABLE META_BRN.DICFIELD ( 
	SELECT_ID VARCHAR( 24 ) CCSID  1025  NOT NULL , 
	AS_NAME VARCHAR( 64 ) CCSID  1025  NOT NULL , 
	FACT_NAME VARCHAR( 255 ) CCSID  1025  DEFAULT NULL , 
	FNUMBER INTEGER DEFAULT NULL , 
	FTYPE INTEGER NOT NULL DEFAULT  0  , 
	VLENGTH INTEGER DEFAULT NULL , 
	NAME4USER VARCHAR( 255 ) CCSID  1025  DEFAULT NULL , 
	PATTERN VARCHAR( 24 ) CCSID  1025  DEFAULT NULL , 
	MASK VARCHAR( 24 ) CCSID  1025  DEFAULT NULL , 
	PARAM VARCHAR( 2000 ) CCSID  1025  DEFAULT NULL , 
	FMODE INTEGER NOT NULL DEFAULT  0  , 
	DVALUE VARCHAR( 2000 ) CCSID  1025  DEFAULT NULL , 
	REF_NAME VARCHAR( 24 ) CCSID  1025  DEFAULT NULL , 
	REF_KEY VARCHAR( 24 ) CCSID  1025  DEFAULT NULL , 
	REF_FIELD VARCHAR( 255 ) CCSID  1025  DEFAULT NULL , 
	VISIBLE CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	MANDATORY CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	READONLY CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	KEYED CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	UNIQUED CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	DEPENDED CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	NIFE CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	CING CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	REF_REF INTEGER DEFAULT NULL , 
	BASE_REF INTEGER DEFAULT NULL , 
	REF_TYPE INTEGER NOT NULL DEFAULT  0  , 
	NOCOPY CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	NOMODIFY CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	EVALUATED CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	AUTOVIEW CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	FCLASS INTEGER NOT NULL DEFAULT  1  , 
	VPREC INTEGER NOT NULL , 
	EVENTED CHAR( 1 ) CCSID  1025  NOT NULL DEFAULT '0' , 
	REF_SELECT VARCHAR( 24 ) CCSID  1025  DEFAULT NULL , 
	ANCHORS INTEGER NOT NULL DEFAULT  3  , 
	C_X INTEGER NOT NULL DEFAULT  0  , 
	C_Y INTEGER NOT NULL DEFAULT  0  , 
	C_W INTEGER NOT NULL DEFAULT  0  , 
	C_H INTEGER NOT NULL DEFAULT  0  , 
	L_X INTEGER NOT NULL DEFAULT  0  , 
	L_Y INTEGER NOT NULL DEFAULT  0  , 
	IS_BORDER SMALLINT NOT NULL DEFAULT  0  , 
	L_IS_BTN SMALLINT NOT NULL DEFAULT  0  , 
	B_FORM VARCHAR( 64 ) CCSID  1025  DEFAULT NULL , 
	B_QUERY VARCHAR( 64 ) CCSID  1025  DEFAULT NULL , 
	B_KEY_FIELD FOR COLUMN B_KEY00001 VARCHAR( 64 ) CCSID  1025  DEFAULT NULL) ; 


CREATE TABLE META_BRN.FS_DICREFER ( 
	NUM INTEGER NOT NULL , 
	NAME VARCHAR( 64 ) CCSID  1025  NOT NULL , 
	NAME_TYPE INTEGER NOT NULL DEFAULT  0  , 
	VALUE_TYPE INTEGER NOT NULL DEFAULT  0  , 
	SLIST VARCHAR( 32000 ) CCSID  1025  DEFAULT NULL , 
	MNEMO VARCHAR( 10 ) CCSID  1025  DEFAULT NULL) ; 

...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34932907
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE DICREFER (
...
  SLIST BLOB SUB_TYPE  0  SEGMENT SIZE  80 ,
...
)

CREATE TABLE META_BRN.FS_DICREFER ( 
...
  SLIST VARCHAR( 32000 ) CCSID  1025  DEFAULT NULL , 
...
) ; 
Проблема вот в этом "маппинге".
Вы бы сделали SLIST BLOB(<сколько_надо>) и будет вам щастье...
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34937255
ValPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
Вы бы сделали SLIST BLOB(<сколько_надо>) и будет вам щастье...

Нет в жизни щастья

Сделал как Вы велели.

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE FS_DICREFER(
    ...
    SLIST CLOB( 48000 ), /* CLOB(2G) NOT LOGGED, */
    ...   
)

Протиснулся, но сразу налетел далее.

SELECT distinct ... R.SLIST ...
FROM FS_DICREFER
ORDER BY ...

Получил

Код: plaintext
1.
2.
3.
4.
SQL State:  42907 
Vendor Code: - 134 
Message: [SQL0134] Слишком длинная строка, аргумент или путь. Причина . . . . :   Это сообщение может быть вызвано одной из следующих ошибок: -- Длина аргумента функции COUNT слишком велика. Длина аргумента функции COUNT не должна превышать 2000 байт, если задано DISTINCT.  Если аргумент графический, то его длина не должна превышать 1000 символов DBCS. 
...
 -- В выражении ORDER BY, GROUP BY, условии соединения, предложении SELECT с ключевым словом DISTINCT или в предложении UNION без ключевого слова ALL указан столбец LOB. с Исправление . . :   Измените аргумент функции или число библиотек в пути таким образом, чтобы длина аргумента не превышала максимальное значение. Удалите столбец LOB из предложения, в котором он недопустим. Повторите запрос.
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #34937332
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValPotSELECT distinct ... R.SLIST ...
FROM FS_DICREFER
ORDER BY ...
Select distinct по LOB???
В db2 так действительно нельзя (и сравнение LOB'ов тоже), т.к. считается слишком непроизводительным, видимо.
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #35083692
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www-128.ibm.com/developerworks/ru/forums/dw_thread.jsp?message=3123&thread=1245&forum=19&ca=drs-fo-ru
...
Рейтинг: 0 / 0
Миграция с IB. Слишком длинный запрос.
    #35087439
ValPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ссылке 8.1, а у нас V5R3, разная диагностика.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Миграция с IB. Слишком длинный запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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