pyodb c не обрабатывает операторы CASE из базы данных ORACLE - PullRequest
0 голосов
/ 24 марта 2020

Я использую pyodb c для подключения к Oracle (64 бита) и по какой-то причине приведенный ниже оператор Case sql работает в SQL Developer, но обнаруживает ошибку в pyodb c.

select xx, yy, zz,
case
    when zz > 10000000 Then 'A'
    when zz < 10000000 Then 'B'
end as casetest
from xxyyzz where zz is not null;

Ошибка: сбой при выполнении sql: 'выберите xx, yy, zz,
case
, когда zz> 10000000 Тогда' A '

когда zz <10000000, тогда 'B' <br>заканчивается как casetest
из xxyyzz, где zz не равно нулю; класс 'pyodbcError' возвратил результат с ошибкой, установленной

Имейте в виду, что приведенный выше оператор работает в Sql Developer. Я пробовал объединения, где, с разделом, оператором декодирования, и все они хорошо работают с pyodb c. Кажется, CASE не работает.

Я подозреваю, что проблема в драйвере, который я использую. Драйвер, который я использую, - DRIVER = {Oracle в OraClient12102}.

Спасибо, любая помощь будет оценена.

1 Ответ

0 голосов
/ 24 марта 2020

Попробуйте DECODE, возможно, это поможет:

select xx, yy, zz,
  decode(sign(zz - 10000000 ), 1, 'A', -1, 'B') casetest
from xxyyzz where zz is not null;

Кстати, написанный вами код предполагает, что zz не может быть точно 10000000; это правильно?


PS ах, верно, вы сказали, что пытались DECODE. Извините, не видел вовремя.

...