Текущее время: Ср, июл 16 2025, 05:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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