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;
/
我尝试微调如下查询。
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;
/