在sql中.我们可以使用
if(boolean ,A,B)格式对语句进行判断筛选
比如:
update tablename set fieldName = if(fieldName > 20, 20 , fieldName ) ;
将fieldName 中大于20的数削至20,但是这个语句在存储过程中.没有办法编译,  请问有谁知道怎么回事吗?存储过程MySQL

解决方案 »

  1.   

    可以的啊mysql> delimiter $
    mysql> create procedure sp_test()
        -> begin
        -> update test4 set a=if(a>20,20,a);
        -> end
        -> $
    Query OK, 0 rows affected (0.02 sec)
      

  2.   

    贴出你的创建存储过程完整语句和MYSQL提示的错误信息。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  3.   

    不好意思.这个在navicat下执行出现的问题.  在linux下执行没有问题.多谢各位,应该是工具问题!
    mysql> delimiter //
    create procedure clean_data_everyday(
    in_uid int(10),
    in_full_energy int(10)
    )
    begin
     update wj_player set energy = if(energy > in_full_energy,in_full_energy,energy) where uid = in_uid;
    end
    //
    delimiter ;
        -> 按回车后.没有提示成功!
    使用的工具 navicat在linux下.执行成功.