Oracle 问题中的 Oracle 缺少关键字

Oracle Missing keyword in oracle issue

我尝试微调如下查询。

select (CASE WHEN v_yearMSA <> 0 THEN to_char((1 + V_CALPER_INCR2 / v_yearMSA * 2.5) / 100, '99990D999') END);

它给我错误,因为

Error(786,105): PL/SQL: ORA-00905: missing keyword

您缺少 FROM 子句。

使用虚拟样本数据:

SQL> SELECT CASE
  2            WHEN v_yearmsa <> 0
  3            THEN
  4               TO_CHAR ((1 + v_calper_incr2 / v_yearmsa * 2.5) / 100,
  5                        '99990D999')
  6         END
  7    FROM test;

CASEWHENV_
----------
     0.260

SQL>

如果它是PL/SQL,那么你甚至可能不需要SELECT(如果v_代表在其他地方获得值的局部变量):

SQL> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE
  2     v_yearmsa       NUMBER := 1;
  3     v_calper_incr2  NUMBER := 10;
  4     result          VARCHAR2 (20);
  5  BEGIN
  6     result :=
  7        CASE
  8           WHEN v_yearmsa <> 0
  9           THEN
 10              TO_CHAR ((1 + v_calper_incr2 / v_yearmsa * 2.5) / 100,
 11                       '99990D999')
 12        END;
 13     DBMS_OUTPUT.put_line (result);
 14  END;
 15  /
0.260

PL/SQL procedure successfully completed.

SQL>

如果您现在缺少 INTO,这意味着您在 PL/SQL 并且 - 在那里 - 选择需要 INTO。像这样:

declare
  result varchar2(20);
begin
  SELECT CASE
              WHEN v_yearmsa <> 0
              THEN
                 TO_CHAR ((1 + v_calper_incr2 / v_yearmsa * 2.5) / 100,
                          '99990D999')
           END
      INTO result       --> this
      FROM test;
end;
/