powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB Z/OS ХП Большой SQL запрос
10 сообщений из 10, страница 1 из 1
DB Z/OS ХП Большой SQL запрос
    #37497445
zje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Столкнулся с одной непонятной мне проблемой.
Есть процедура разработанная под DB2 9.1 win. В ней ничего особенного кроме большого SQL запроса нет, запрос
аккуратненько влезает в длину varchar. При переносе этой процедуры под DB2 9.1 под Z/OS выдает ошибку
DB2 SQL ERROR -137, SQLSTATE 54006 THE LENGTH RESULTING FROM CONCAT IS GREATER THAN 32764.
Т.е. как бы уже выходит запределы VARCHAR-а. Причем чтобы процедура заработала надо существенно
сократить запрос. Примерно на 10 тыс. символов.
Как такое получается и есть ли варианты кроме сокращения SQL запроса?
Спасибо.
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37498568
knudsen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zje,

SQLSTATE: 54005


-137 THE LENGTH RESULTING FROM operation IS GREATER THAN maximum-length Explanation:
The length of the result of concatenation or a function exceeds the defined maximum.
The operation that resulted in the error is operation.

For concatenation, the length cannot exceed 32,764 (if character operands) or 16,382 (if graphic operands).
For other functions, see SQL Reference for the maximum result length.

System action:
The statement cannot be executed.

Programmer response:
Ensure that the length of the result does not exceed the defined maximum.


http://www-05.ibm.com/e-business/linkweb/publications/servlet/pbi.wss?CTY=US&FNC=SRX&PBL=SC18-9854-03

- страница 1564
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37498572
knudsen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
указал знающий человек из IBM
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37498624
zje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас почитаю!
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37503073
mbrg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zje,

poprobuj uvelichit' stmtheap,

db2 UPDATE database configuration for db_name using stmtheap 30000

mne v pohozhej situacii pomoglo.
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37503315
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вечер добрый. А текст процедур (работающей и нет) привести можете?
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37503672
mbrg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,
Privet,

nu v obshem to mozhno, tol'ko v ponedel'nik, oni na rabote.

Bilo tak , bila rabochaja procedura, posle izmenenij, dobavili esho odin cikla for, perestala rabotat', a kogda razbil na dve procedure,

vizival vtoruiu, v nej bil tol'ko etot for, vse opiat' rabotalo.
Potom uvelichil stmtheap(tozhe gdeto na farumah nashel) s 8000 na 20000, sobral vse vmeste i vse zarabotalo.
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37538675
zje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Спасибо за ответы.
Тут разобрался в корне вопроса, почему же получается такой большой запрос (в символах).
Если в ХП писать
Код: plaintext
1.
2.
3.
4.
5.
set sql1='select
case when
t1.kod_dor is null then t2.kod_dor
else t1.kod_dor end as kod_dor,
case when t1.kod_nod is null then t2.kod_nod else
t1.kod_nod end as kod_nod, ';

то в итоге получаем
Код: plaintext
select                                                            case when                                                                      t1.kod_dor is null then t2.kod_dor
т.е. на каждый перенос в SQL приходится много лишних символов пробела.
Если же писать
Код: plaintext
1.
2.
3.
4.
5.
set sql1='select ';
set sql1=sql1||'case when ';
set sql1=sql1||'t1.kod_dor is null then t2.kod_dor ';
set sql1=sql1||'else t1.kod_dor end as kod_dor, ';
set sql1=sql1||'case when t1.kod_nod is null then t2.kod_nod else ';
set sql1=sql1||'t1.kod_nod end as kod_nod, '

то всё нормально, но получается слишком много операторов set.
При чем так происходит только при деплое под Z/OS, под PC нет никаких лишних пробелов.

ХП пишу в Data Studio 2.1.
Может кто-нибудь знает как избежать эти лишних пробелов?
Заранее спасибо.
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37538726
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zje,

Здравствуйте.
Код: plaintext
1.
2.
3.
4.
5.
6.
set sql1=
  'select '
||'case when '
||'t1.kod_dor is null then t2.kod_dor '
||'else t1.kod_dor end as kod_dor, '
||'case when t1.kod_nod is null then t2.kod_nod else '
||'t1.kod_nod end as kod_nod, ';
?
...
Рейтинг: 0 / 0
DB Z/OS ХП Большой SQL запрос
    #37538757
zje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую так..
Как всё просто ведь бывает.. )
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB Z/OS ХП Большой SQL запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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