CASE rad_val.rad
      WHEN 1 THEN
        INSERT INTO areas VALUES(rad_val.rad,area);
      WHEN 10 THEN 
        INSERT INTO areas VALUES(0,0);
      ELSE RAISE case_not_found;
      END;

解决方案 »

  1.   

    case 变量 
       when 条件 then 
        ...
      

  2.   

    你犯的错误和我一样,老是把end写成end case,呵呵!
      

  3.   

    你的数据库是什么版本的?
    我的版本:
    SQL> select * from v$version;BANNER
    ----------------------------------------------------------------
    Personal Oracle9i Release 9.2.0.1.0 - Production
    PL/SQL Release 9.2.0.1.0 - Production
    CORE    9.2.0.1.0       Production
    TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
    NLSRTL Version 9.2.0.1.0 - Production执行情况:19:29:29 SQL> DECLARE
    19:29:29   2     pi CONSTANT NUMBER(9,7) :=3.1415927;
    19:29:29   3     area NUMBER(14,2);
    19:29:29   4     CURSOR rad_cursor IS
    19:29:29   5            SELECT * FROM radis;
    19:29:29   6    rad_val rad_cursor%ROWTYPE;
    19:29:29   7  BEGIN
    19:29:29   8    OPEN rad_cursor;
    19:29:29   9    LOOP
    19:29:29  10        FETCH rad_cursor INTO rad_val;
    19:29:29  11        EXIT WHEN rad_cursor%NOTFOUND;
    19:29:29  12        area :=pi*power(rad_val.rad,2);
    19:29:29  13        CASE
    19:29:29  14        WHEN rad_val.rad=1 THEN
    19:29:29  15          INSERT INTO areas VALUES(rad_val.rad,area);
    19:29:29  16        WHEN  rad_val.rad=10 THEN
    19:29:29  17          INSERT INTO areas VALUES(0,0);
    19:29:29  18        ELSE RAISE case_not_found;
    19:29:29  19        END CASE;
    19:29:29  20    END LOOP;
    19:29:29  21    CLOSE rad_cursor;
    19:29:29  22  END;
    19:29:29  23  /PL/SQL 过程已成功完成。已用时间:  00: 00: 00.00