DECLARE
v_garde char(1) :=upper('&p grade');
v_appr varchar2(20);
BEGIN
v_appr:=
case v_grade
when 'A' then 'excellent'
when 'B' then 'very good'
when 'C' then 'good'
ELSE 'NO such grade'
END;
dbms_output.put_line('grade:'||v_grade||'appraisal'||v_appr);
END;
運行的時候老是出錯 請問錯在哪裡呀?
v_garde char(1) :=upper('&p grade');
v_appr varchar2(20);
BEGIN
v_appr:=
case v_grade
when 'A' then 'excellent'
when 'B' then 'very good'
when 'C' then 'good'
ELSE 'NO such grade'
END;
dbms_output.put_line('grade:'||v_grade||'appraisal'||v_appr);
END;
運行的時候老是出錯 請問錯在哪裡呀?
v_grade char(1) :=upper('&p_grade');
v_appr varchar2(20);
BEGIN
v_appr:=
case v_grade
when 'A' then 'excellent'
when 'B' then 'very good'
when 'C' then 'good'
ELSE 'NO such grade'
END;
dbms_output.put_line('grade:'||v_grade||'appraisal'||v_appr);
END;
/
2 v_grade char(7) :=upper('&p grade');--定义错误
3 v_appr varchar2(20);
4 BEGIN
5 v_appr:=
6 case v_grade
7 when 'A' then 'excellent'
8 when 'B' then 'very good'
9 when 'C' then 'good'
10 ELSE 'NO such grade'
11 END;
12 dbms_output.put_line('grade:'||v_grade||' appraisal '||v_appr);
13 END;
14 /
输入 p 的值: a
原值 2: v_grade char(7) :=upper('&p grade');
新值 2: v_grade char(7) :=upper('a grade');
grade:A GRADE appraisal NO such gradePL/SQL 过程已成功完成。
SQL> DECLARE
2 v_grade char(1) :=upper('&p');
3 v_appr varchar2(20);
4 BEGIN
5 v_appr:=
6 case v_grade
7 when 'A' then 'excellent'
8 when 'B' then 'very good'
9 when 'C' then 'good'
10 ELSE 'NO such grade'
11 END;
12 dbms_output.put_line('grade:'||v_grade||' appraisal '||v_appr);
13 END;
14 /
输入 p 的值: a
原值 2: v_grade char(1) :=upper('&p');
新值 2: v_grade char(1) :=upper('a');
grade:A appraisal excellentPL/SQL 过程已成功完成。
DECLARE
v_garde varchar2(1) :=upper('&p v_garde');
v_appr varchar2(20);
BEGIN
v_appr:=
case v_garde
when 'A' then 'excellent'
when 'B' then 'very good'
when 'C' then 'good'
ELSE 'NO such grade'
END;
dbms_output.put_line('garde:'||v_garde||'appraisal'||v_appr);
END;但提示的錯誤是:
ORA_06502: PL/SQL:NUMERIC or value error : character string buffer too small
ORA-06512:at line 2
06502.0000 -"PL/SQL:numeric or value error"
error at line :1
输入的时候注意最多输入一个字符
你的' v_grade'已经8字符了,所以至少定义为9
v_garde varchar2(1) :=upper('&p v_garde');&只起个简单的替换作用,你这样定义v_garde(应该是v_grade),至少长度>8,('&p v_garde',后面的' v_garde'就8个字符了,再加上你输入的P);根据你下面的逻辑,如果去掉空格,就可以满足了。。