SELECT FLOOR(LOT/4) INTO V_LOT FROM SFCMO WHERE MO='000026085816';
  SELECT MOD(LOT,4) INTO V_MOD FROM SFCMO WHERE MO='000026085816';
  SELECT MO INTO V_MO FROM SFCMO WHERE MO='000026085816';  FOR V_I IN 0..V_LOT-1 LOOP
  ....
  END LOOP;
  
  CASE 
  WHEN V_MOD=1 THEN
  ....
  WHEN V_MOD=2 THEN 
  ....
  ELSE 
  .....
  END CASE;以上为SQL大体结构,但是执行PROCEDURE后,发现CASE语句中的结果没有被执行出来。语句结构有什么问题么???

解决方案 »

  1.   

    进入else语句了吗
      

  2.   


    整个CASE都没有执行,实际上V_mode=2的。
      

  3.   

    我的天,case when用法错误!只能在select子句和where条件中可以使用,不能用来在函数中作为流转条件的判断,你这个完全可以使用用if then else end if来判断。
      

  4.   


    只能在select子句和where条件中可以使用。
                  能举例说明下么,没太懂??
    不能用来在函数中作为流转条件的判断。
                流转条件是指什么啊??
      

  5.   

    sql是面对集合的,不是面向过程,您的整个思路就有问题
      

  6.   


    只能在select子句和where条件中可以使用。
                  能举例说明下么,没太懂??
    不能用来在函数中作为流转条件的判断。
                流转条件是指什么啊??
    举例如下,case when的用法有点类似decode:
    SELECT CASE
             WHEN 'A' = 'A' THEN
              'AA'
             ELSE
              'AAA'
           END
      FROM DUAL
     WHERE (CASE
             WHEN 'A' = 'A' THEN
              'AA'
             ELSE
              'AAA'
           END) = 'AA'第二个“流转条件”的意思就是在存储过程中不能用case when作为条件判断的关键词,只能用if then语句。