第一种写法:
declare
  num   number;
begin
  num := &请输入一个数字;
  case num
    when 1 then
      dbms_output.put_line('优');
    when 2 then
      dbms_output.put_line('良');
    when 3 then
      dbms_output.put_line('可');
    when 4 then
      dbms_output.put_line('差');
    else
      dbms_output.put_line('没有这个等级');
  end case;end;
/
第二种写法:declare
  grade varchar2(4);
 begin
  grade := &请输入一个字母;
  case num
    when A then
      dbms_output.put_line('优');
    when B then
      dbms_output.put_line('良');
    when C then
      dbms_output.put_line('可');
    when D then
      dbms_output.put_line('差');
    else
      dbms_output.put_line('没有这个等级');
  end case;end;
/第一种写法是对的但是第二种写法是错的我是初学者不明白这个问题请各位大侠指点指点。

解决方案 »

  1.   

    declare
    grade varchar2(4);
    begin
    grade := &请输入一个字母;
    case num  --应为grade
    when A then   --应为'A'
    dbms_output.put_line('优');
    when B then   --应为'B'
    dbms_output.put_line('良');
    when C then   --应为'C'
    dbms_output.put_line('可');
    when D then   --应为'D'
    dbms_output.put_line('差');
    else
    dbms_output.put_line('没有这个等级');
    end case;end;
    /
      

  2.   


    declare
        grade varchar2(4);
    begin
        grade := &请输入一个字母;
        case grade
          when 'A' then dbms_output.put_line('优');
          when 'B' then dbms_output.put_line('良');
          when 'C' then dbms_output.put_line('可');
          when 'D' then dbms_output.put_line('差');
          else dbms_output.put_line('没有这个等级');
        end case;
    end;
      

  3.   

    楼上正解,num没有定义,你定义的是grade
      

  4.   


    在oracle数据库里面运行此代码出现如下错误:
    ORA-06550: 第 5 行, 第 14 列: 
    PLS-00201: 必须声明标识符 'A'
    ORA-06550: 第 5 行, 第 5 列: 
    PL/SQL: Statement ignored请再指点指点,谢谢各位啦!
      

  5.   


    declare
    grade varchar2(4);
    begingrade:='&请输入一个字母';
    case grade
    when 'A' then
    dbms_output.put_line('优');
    when 'B' then
    dbms_output.put_line('良');
    when 'C' then
    dbms_output.put_line('可');
    when 'D' then
    dbms_output.put_line('差');
    else
    dbms_output.put_line('没有这个等级');
    end case;end;
    /红色的地方,sql*plus处理替代变量时,只是把替代变量简单地替换成在系统提示下输入的值,需要自行对数据类型进行检查。
      

  6.   


    grade:='&请输入一个字母';
    晕,又抽风了~要加上引号
      

  7.   

    declare
      grade varchar2(4);
    begin
      grade := '&请输入一个字母';
      case grade 
        when 'A' then
          dbms_output.put_line('优');
        when 'B' then
          dbms_output.put_line('良');
        when 'C' then
          dbms_output.put_line('可');
        when 'D' then
          dbms_output.put_line('差');
        else
          dbms_output.put_line('没有这个等级');
      end case;
    end;
      

  8.   

    1.grade:='&请输入一个字母';  --grade varchar2(4) 类型需加引号;
    2. case num  中num变量需要定义