Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Максимальная длина возвращаемого результата в SQL DB2 / 6 сообщений из 6, страница 1 из 1
13.02.2012, 17:59
    #37659632
emctl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
Добрый день.

Есть процедура, которая генерирует ДМЛ-и и выполняет его через execute immediate. Весь дмл генерируется одним запросом в одно значение, и выглядит это следующим образом:
Код: plsql
1.
2.
3.
4.
for dml as select ...dml concatination... as sql_txt from SYSCAT.TABLES join SYSCAT.COLUMNS...
do
execute immediate dml.sql_txt;
end for;


Вопрос следующий, есть ли ограничение по длине значения, которое возвращается запросом, чтоб, если будет какая-то таблица с большим количеством полей, этот execute immediate не вылетел с ошибкой?

DB2 9.7

Заранее спасибо.
...
Рейтинг: 0 / 0
13.02.2012, 18:56
    #37659746
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
Добрый день.

SQL and XML limits :
Maximum total length of an SQL statement (in bytes): 2 097 152
...
Рейтинг: 0 / 0
13.02.2012, 20:12
    #37659860
emctl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
да, я это нашёл, но...
По описанию - это максимальная длина самого запроса, а не того, что он возвращает...
А там может быть и значение аналогичное varchar-у, а это уже 32767 bytes вроде
...
Рейтинг: 0 / 0
14.02.2012, 11:58
    #37660661
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
emctlПо описанию - это максимальная длина самого запроса, а не того, что он возвращает...
А там может быть и значение аналогичное varchar-у, а это уже 32767 bytes вродеНасколько я понял, ваш код выбирает из базы текст sql запроса, а потом его выполняет.
Т.е. вы делаете:
Код: plaintext
for dml as select  expr1 || ... || exprN  as sql_txt from ...
Длина и тип some_expression вычисляется как сумма длин операндов.

Если длина выходит за границы макс. длины varchar, то пишИте:
Код: plaintext
for dml as select  clob(expr1) || ... || exprN  as sql_txt from ...
Результат будет CLOB длины равной сумме длин операндов.
...
Рейтинг: 0 / 0
14.02.2012, 14:52
    #37661147
emctl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
Mark Barinstein,

Спасибо. Да, это то, что я хотел узнать.
Теперь уточню немного:
1) в зависимости от типа первого экспрешена, все остальные будут приводится к нему при конкатенации?
2) если 1-й экспрешен строка 'insert into ...', с которой дальше происходит конкатенация, то будет varchar?
...
Рейтинг: 0 / 0
14.02.2012, 16:43
    #37661419
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальная длина возвращаемого результата в SQL DB2
emctl...
1) в зависимости от типа первого экспрешена, все остальные будут приводится к нему при конкатенации?
2) если 1-й экспрешен строка 'insert into ...', с которой дальше происходит конкатенация, то будет varchar?
Для строк, если любой из операндов - clob, то результат будет clob.
Вы можете проверить это так:
Код: sql
1.
describe values 'insert into ' || clob('select * from sysibm.sysdummy1')
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Максимальная длина возвращаемого результата в SQL DB2 / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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