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

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

Как с этим бороться?
Ну, очень нужно чтобы и не ругалась, и все данные были.
Уменьшать длину полей уже некуда, все по минимуму....
...
Рейтинг: 0 / 0
20.09.2004, 11:18
    #32701779
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с длиной строки более 1962 bytes в ASE 12.5
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
20.09.2004, 11:44
    #32701872
andy753
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с длиной строки более 1962 bytes в ASE 12.5
Ну можно еще посоветовать записывать данные в ТМП-овую таблицу и потом селектом оттуда ее брать.

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

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

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

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

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

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

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


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