日期:2014-05-16  浏览次数:20750 次

在MYSQL存储过程中case语句里嵌套IF语句行吗?
小弟在存储过程中需要能进行多层判断,类假下面的写法
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'”,请教一下高手们这到底是什么原因?如果不能这样写,最优的解决方案是什么,谢谢!

------解决方案--------------------
你的完整的create procedure 语句是什么?
------解决方案--------------------
不可以这样

这里的then类似C系列的return而不是Basic系列的if condition then

也就是then后面需要是个表达式,也就是返回一个运行结果
------解决方案--------------------
上面的then说的是case when那个then