powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ограничения на размер значения текстовой переменной
12 сообщений из 12, страница 1 из 1
ограничения на размер значения текстовой переменной
    #34806997
Lily V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Динамически формирую текст запроса. Нужно переменной присвоить какое-то текстовое значение. Столкнулась с тем, что независимо от типа переменной, присваивается только значение 160 символов, остальное обрезается. Подскажите, разве есть ограничения на размер присваиваемого значения переменной типа text (или long varchar)? И как вообще переменной присвоить "длинное" текстовое значение.
примерно такой скрипт:

begin

declare @s text; // long varchar(5000) тоже не помогло
set @s = 'очень длинная строка длиной больше 160 символов';
select @s; // выводит только строку длиной 160 символов, дальше обрезает
end
и дело не в длине отображаемого текста (в опциях ISQL Trancation length = 5000), значение переменной на самом деле обрезается

ASA 8.0.2.4424
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34808147
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как вы определяете что значение обрезалось ?
Попробуйте после присваивания посмотреть длину переменной, ибо визуальные утилиты могут просто отображать обрезано.
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34808265
Lily V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я говорила, я динамически формирую текст запроса. При запуске его получила ошибку, и увидела, что переменная, которая подставляется в текст запроса, "урезана", вычислила ее длину - 160 символов.
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34808786
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может дело в содержимом строки ?
какой символ на 161 позиции ?
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34808812
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте склеить строчки

set @s = 'так чтобы ' + 'в каждом куске ' + ' было менее 160 символов'

вместо + можно ||
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34809884
Lily V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на 161 позиции все время разные символы, но все это текстовые значения.
Пробовала склеивать из кусочков размером < 160, все также - значение обрезается. И что больше всего поражает, рядом есть переменная sql_text так же типа text, в которой я постепенно формирую запрос, так вот к ней нормально добавляются значения, т.е. sql_text := sql_text + @s - получаю текст запроса размером где-то более 4000 символов, т.е.значение не обрезается, но вот с переменной @s - фигня.
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34809927
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда вставьте эту строку сюда...
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34810210
Lily V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сначала идет курсор по таблицам, потом кусочек:
set @where = @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 37)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 37) ' || ' and ' + @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 44)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 44) ' || ' and ' + @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 49)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 49) ';
sql_text = sql_text + @where;
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34810234
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще не проверял, но использовать в качестве имени переменной зарезервированное слово не стоит
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34810250
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
begin

declare @s text;
declare @pk text;
declare @where text;
declare sql_text text;

set @pk = '123';
set @where = @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 37)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 37) ' || ' and ' + @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 44)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 44) ' || ' and ' + @pk || ' not between (select pos_idstart from dba.pos_settings where pos_id = 49)' || ' and (select pos_idstop from dba.pos_settings where pos_id = 49) ';
set sql_text = sql_text + @where;
select length(sql_text);
end;
у меня вывело 433
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34811363
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте пропачить сервак.
Последний билд: 8.0.3.5570
...
Рейтинг: 0 / 0
ограничения на размер значения текстовой переменной
    #34816669
Lily V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
после того, как переменную @pk объявила как text (а так же все переменные, с которыми происходит конкатенация в процессе формирования текста запроса) все стало нормально.
Всем спасибо
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ограничения на размер значения текстовой переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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