Проблема с типом данных в битах PowerBuilder 12 и SQL (1 неверно истолковано как -1) - PullRequest
2 голосов
/ 29 июня 2011

У меня есть приложение PB 12, которое использует SNC для подключения к БД SQL 2008. У меня есть таблица с битовыми типами данных, которые заполнены 1 и 0, как и следовало ожидать. Когда PB запрашивает эту таблицу, она конвертирует все 1 в -1. Это новое поведение после того, как мы преобразовали старое приложение PB 9 в 12, а также переключили нашего поставщика БД с OLEDB на SNC (собственный клиент SQL).

Покопавшись в Интернете, я вижу, что об этой проблеме сообщили еще в PB 11, и что единственным решением было установить для параметра DBParm устаревшее значение, которое негативно влияет на производительность. (DBParm 'StaticBind' установлен в 0 вместо значения по умолчанию 1).

Была ли проделана работа над этой ошибкой с тех пор? Как люди решили эту проблему?

Спасибо!

1 Ответ

0 голосов
/ 29 июня 2011

В большинстве определений логических типов данных (часто представляемых в sql как битовые типы) утверждается, что 0 равно false, а ненулевое - true. Таким образом, в логических терминах -1 и +1 в целом эквивалентны.

В некоторых языках логические данные тип определяется как включающий более две истины Например, ISO Стандарт SQL 1999 определил логическое значение значение как истинное, ложное или неизвестно (SQL-ноль).

Возможно, в запросе возвращается -1, потому что PowerBuilder интерпретирует результат как «неизвестный», а не «true».

Таким образом, вы должны оценить, равно ли значение 0 (ложь), а если нет - true.

...