Текущее время: Сб, июл 19 2025, 06:22

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: В чем разница между between и LE GE в плане переносимости?
СообщениеДобавлено: Чт, окт 05 2006, 20:17 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Добрый день!

SLIN при расширенной проверке программы руганулся на проблемы с переносимостью кода. Упрощенно ситуация следующая (цифры нереальные):
Есть табличка ZMAPPING с полями типа CHAR
BUKRS_FROM BUKRS_TO HKONT_FROM HKONT_TO HKONT_RESULT
1000 1100 4000000010 4000000020 4000000050
2000 2100 6000000010 6000000020 6000000050

записей много.
Суть работы селекта, что если проверяемые значения BUKRS и HKONT попадают в интервал, то выдать результирующий номер счета.

Строим селект
Code:
DATA:
HKONT_OUT LIKE BSEG-HKONT,
hkont_in LIKE BSEG-HKONT,
bukrs_in LIKE T001-BUKRS.

hkont_in = '4000000015'.
bukrs_in = '1050'.

SELECT HKONT_RESULT FROM ZMAPPING INTO HKONT_OUT
WHERE BUKRS_FROM <= bukrs_in AND BUKRS_TO >= bukrs_in
AND     HKONT_FROM <= hkont_in AND HKONT_TO >= hkont_in


Так вот, SLIN ругается, что раз тип поля CHAR, то использовать при сравнении char операторы "<="; ">=" небезопасно из-за возможный проблем с переносимостью. Собственно, это понятно и можно проигнорировать, но все же возникает академический интерес ;-)

Вопросов два:
1) Почему при использовании оператора BETWEEN предупреждеий нет. Хотя по сути такое же сравнение char-ов.
2) Как изменить код, чтобы предупреждений <я не знать русский языка>.

Таблица большая. Загонять все данные во внутреннюю таблицу и делать выборку по ней, вариант понятный, рассматривать его не хочется.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 06 2006, 09:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
В IF при сравнении ругается как на >=/<=, так и на BETWEEN.
Скрыть сообщение предлагается комментарием
"#EC PORTABLE

ЗЫ Для селекта - то же самое.


Последний раз редактировалось T Пт, окт 06 2006, 09:42, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 06 2006, 09:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Чтобы не было предупреждений - можно использовать RANGES и оператор IN.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB