Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с VARCHAR в ХП, IB 7.0 
:(
    Опции темы
VladBD
Дата 14.3.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: нет
Всего: 5



Есть таблица
Код

CREATE TABLE TBL_SORT (
    ID      INTEGER NOT NULL,
    FIELD1  VARCHAR(250),
    FIELD2  VARCHAR(250));

Есть хранимая процедура - вот кусок...
Код

...
declare variable S VARCHAR(250);
...
FOR SELECT ID_LINK FROM tbl1 WHERE (ID_ACTION=:pid_action) into :PID_LINK
    DO
    BEGIN
      S='|';
      FOR SELECT ID_LOT FROM tbl2 WHERE (ID_LINK=:PID_LINK) into :PID_LOT
      DO
      BEGIN
        S=S||CAST(:PID_LOT as varchar(250))||'|';
      END
      //S=S||'0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789';
      //S=S||'0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789';
      INSERT INTO TBL_SORT (ID, FIELD1) VALUES (:PID_LINK,:S);
    END


Проблема в переменной S. Если она не превышает 250 то все нормально, если раскоментарить код (специально увеличивает >250) - то возникает ошибка...в принципе все правильно - только тогда у меня такие вопросы...
1 - Есть ли функция проверки длины S, т.к. в таблицу для хранения и индексирования все равно нужно 250.
2 - Можно ли указать varchar(32000) (по максимуму - думаю такую строку не сгенерю), а при вставке записи указать CAST(:S as Varchar(250))
3 - Если S varchar(1000) - при вставке будет ли сервер сам отрубать до 250 символов.

Это сообщение отредактировал(а) VladBD - 14.3.2007, 13:28
PM MAIL   Вверх
mspuz
Дата 15.3.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



Есть ф-ция SUBSTRING(значение FROM начальная позиция FOR длина)

Добавлено @ 10:52 
Для того, чтобы узнать длину строки - octet_length(значение).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.