Oracle 10g: CASE в операторе выбора (ошибка ORA-00936) - PullRequest
1 голос
/ 21 февраля 2012

Я выполняю этот оператор в Oracle 10g.

     select CASE Math WHEN BETWEEN 90 AND 100 THEN 'A'
                      WHEN BETWEEN 80 AND 90  THEN 'B'
                      WHEN BETWEEN 0  AND 80  THEN 'C'
                      ELSE 'Invalid score' END
       from score

Но я получаю следующую ошибку

ORA-00936: отсутствует выражение

Может кто-нибудь помочь с тем, что мне не хватает?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

В операторе SQL оператор CASE должен выглядеть примерно так:

SELECT CASE WHEN math BETWEEN 90 AND 100 
            THEN 'A'
            WHEN math BETWEEN 80 AND 90
            THEN 'B'
            WHEN math BETWEEN 0 AND 80
            THEN 'C'
            ELSE 'Invalid Score'
         END
  FROM score

Синтаксис CASE variable WHEN действителен в PL / SQL, но не в SQL.

1 голос
/ 21 февраля 2012

Вместо использования условия я бы сделал это:

 select CASE WHEN math BETWEEN 90 AND 100 THEN 'A'
                      WHEN math BETWEEN 80 AND 90  THEN 'B'
                      WHEN math BETWEEN 0  AND 80  THEN 'C'
                      ELSE 'Invalid score' END
       from score

Я не думаю, что Oracle любит функцию BETWEEN без предшествующей переменной.

...