SET SERVEROUTPUT ON
DECLARE
v_num NUMBER := &ANY_NUM;
v_res NUMBER;
BEGIN
v_res := MOD(v_num, 2);
CASE v_res
WHEN 0 THEN DBMS_OUTPUT.PUT_LINE(v_num||'是偶数');
ELSE DBMS_OUTPUT.PUT_LINE(v_num||'是奇数');
END CASE;
EXCEPTION
WHEN INVALID_NUMBER THEN
 DBMS_OUTPUT.PUT_LINE('请输入数字!');
END;
/ 就是如此简单一个程序,PL/SQL竟然提示在CASE处处错了,怎么回事呢?
我是菜鸟,大家勿笑啊!

解决方案 »

  1.   

    我在pl/sql developer中运行楼主的代码没有问题,结果正确的。
      

  2.   

    我的也没问题只是,在非数字的处理上会有问题
    因为v_numNUMBER := &ANY_NUM;
    这就定义就错了,不会到你的exception
      

  3.   

    环境是..? 8i,9i,10g?  提示什么错误?
      

  4.   

    我的环境是ORACLE8i……提示CASE出错,怎么你们的都没问题呢?
      

  5.   

    请大家帮忙在ORACLE8i的SQL*PLUS下调试好吗?
      

  6.   

    呵呵,这就对了,8i不支持case的,oracle从9i才开始支持case。
    楼主还是改用if ... then吧。