1

我正在使用 SQL Developer 并编写此 PL/SQL 代码。但是当我给 B 作为选项时,我得到了错误。请帮忙。

SET SERVEROUTPUT ON

accept q_grade char prompt 'EnterGrade: '
DECLARE
v_grade CHAR(1) := UPPER(&q_grade);
v_appraisal VARCHAR(20);

BEGIN
v_appraisal := CASE v_grade WHEN v_grade = 'A' THEN 'Excellent'
WHEN v_grade = 'B' THEN 'Good'
WHEN v_grade = 'C' THEN 'FAIL'
ELSE 'NO SUCH GRADES'
END;

DBMS_OUTPUT.PUT_LINE ('Grade:  ' || v_grade  || ' Appraisal  ' ||v_appraisal);

END;
/

错误报告:

ORA-06550:第 2 行,第 26 列:
PLS-00201:必须声明标识符“B”
ORA-06550:第 2 行,第 9 列:
PL/SQL:项目被忽略
ORA-06550:第 6 行,第 21 列:
PLS-00320:此表达式类型的声明不完整或格式错误
ORA-06550:第 6 行,第 1 列:
PL/SQL:语句被忽略
ORA-06550:第 12 行,第 57 列:
PLS-00320:此表达式类型的声明不完整或格式错误
ORA-06550:第 12 行,第 21 列:
PL/SQL:语句被忽略
06550. 00000 - “第 %s 行,第 %s 列:\n%s”
*原因:通常是 PL/SQL 编译错误。
*行动:
4

2 回答 2

2

改变:

v_grade CHAR(1) := UPPER('&q_grade');

v_appraisal := CASE WHEN v_grade = 'A' THEN 'Excellent'
于 2013-07-11T18:33:56.420 回答
1

您需要在语句v_grade之后立即删除额外的内容:CASE

BEGIN
v_appraisal := CASE WHEN v_grade = 'A' THEN 'Excellent'
/* -- here --------^ */
于 2013-07-11T18:25:57.703 回答