powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как бороться с длиной строки более 1962 bytes в ASE 12.5
8 сообщений из 8, страница 1 из 1
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32700380
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, кто-нибудь знает, как получить на выходе из хранимой
процедуры поля, сумма которых более 1962 bytes.

У меня при компиляции процедуры ругается так:
Warning: Row size (2576 bytes) could exceed row size limit, which is 1962 bytes.

Как с этим бороться?
Ну, очень нужно чтобы и не ругалась, и все данные были.
Уменьшать длину полей уже некуда, все по минимуму....
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32701779
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadgerНарод, кто-нибудь знает, как получить на выходе из хранимой
процедуры поля, сумма которых более 1962 bytes.

У меня при компиляции процедуры ругается так:
Warning: Row size (2576 bytes) could exceed row size limit, which is 1962 bytes.


Ну, во-первых, это видимо не ошибка, а предупреждение. Оно could exceed , т.е. "может превысить", а может и не превысить.

Как бороться - ну, ответ очень зависить от того, насколько оно надо и почему надо. У тебя там запись содержить поля переменной длины, и если они все будут заполнены по максимуму, то они просто не влезут на страницу данных, которая у тебя, по видимому, 2k. И влезть они не могут ни в каком случае. Но если при эксплуатации таких ситуаций не будет, то все будет работать. Ежели нет, будут ошибки при вставках/изменениях данных.
Чтобы расширить ограничение на суммарную длину строки, тебе придется увеличить размер страницы, но это - переустановка сервера, сервер работает только с одной длиной страницы. Также это может привести к потерям производительности всвязи с увеличением нижнего порога размера ввода-вывода до размера новой страницы (меньше страницы быть не может).
Из менее радикальных средств - разбиение таблицы на несколько по вертикали (перенесение части полей в другую таблицу, связанную с этой отношением 1:1) или преобразование длинных полей в text или image - они храняться всегда на отдельных страницах - но с ними сложнее работать в TSQL и на клиенте.
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32701872
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно еще посоветовать записывать данные в ТМП-овую таблицу и потом селектом оттуда ее брать.

Вообще-то способов довольно много и они сильно зависят от конкретных условий и ограничений.
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32701999
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все так и есть, 2k и так далее по тексту.
Немного подумав, наверное, для меня лучший вариант:

Код: plaintext
1.
2.
 - разбиение таблицы на несколько по вертикали 
(перенесение части полей в другую таблицу, связанную с этой 
отношением  1 : 1 ) 
с последующим получением ее, двумя вызовами на клиенте.

Спасибо.
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32702599
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadgerНемного подумав, наверное, для меня лучший вариант:

Код: plaintext
1.
2.
 - разбиение таблицы на несколько по вертикали 
(перенесение части полей в другую таблицу, связанную с этой 
отношением  1 : 1 ) 
с последующим получением ее, двумя вызовами на клиенте.

Зачем двумя вызовами ? JOIN сделай.
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32702914
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЗачем двумя вызовами ? JOIN сделай.Мне нужно результат процедуры получить на клиенте в DataWindow PowerBuilder(а),
а такой JOIN, наверное, опять даст результат: Row size (2576 bytes)
от чего я и пытался уйти....

Да и нет у меня ни одного пользователя, которому разрешено
SELECT делать, только EXECUTE procedure;1 ... ...

Спасибо
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32703795
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да еще раз - оно не влазит при ХРАНЕНИИ строки в пределах одной страницы. А в наборе данных, отправляемом клиенту, может быть какая угодно длина строки - там нет ограничений.
...
Рейтинг: 0 / 0
Как бороться с длиной строки более 1962 bytes в ASE 12.5
    #32704954
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа еще раз - оно не влазит при ХРАНЕНИИ строки в пределах одной страницы. А в наборе данных, отправляемом клиенту, может быть какая угодно длина строки - там нет ограничений. И жизнь стала прекрасной и удивительной... Огромное спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как бороться с длиной строки более 1962 bytes в ASE 12.5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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