小弟在存储过程中需要能进行多层判断,类假下面的写法
case when v_iTempflag = 1 then
          if v_iTempBalance - v_iTempcurpos >=0 then
             -- 处理语句 ...(略)
          elseif v_iTempBalance - v_iTempcurpos <0 then
             -- 处理语句 ...(略)
          end if;
      when v_iTempflag = 2 then
          if v_iTempBalance - v_iTempcurpos >=0 then
             -- 处理语句 ...(略)
          elseif v_iTempBalance - v_iTempcurpos <0 then
             -- 处理语句 ...(略)
          end if;
      else -- 处理语句 ...(略)
end;老是在第一个END IF;之后的WHEN这里报错“Incorrect syntax near 'WHEN'”,请教一下高手们这到底是什么原因?如果不能这样写,最优的解决方案是什么,谢谢!

解决方案 »

  1.   

    你的完整的create procedure 语句是什么?
      

  2.   

    回ACMAIN_CHM:整个存储过程太长了,我就不粘了。我最主要就想问一下是不是能嵌套呢?
      

  3.   

    不可以这样这里的then类似C系列的return而不是Basic系列的if condition then也就是then后面需要是个表达式,也就是返回一个运行结果
      

  4.   

    上面的then说的是case when那个then
      

  5.   

    请问ACMAIN_CHM大侠,有没有嵌套的例子呢?
      

  6.   

    谢谢各位的热心帮助,我把CASE 换成IF后问题解决了。难道CASE WHEN THEN 后面的语句只能是单条语句吗?