Mysql有个特点,如果update语句设定的新值和旧值是一样的,那么update语句不会真正产生效果,会造成影响的行为0,而以前我们都是靠检查update语句影响的行数来确认存储过程中的update语句是否成功执行了的,这个在这里就不起效了,该用什么新方法,非要设置个变量然后传出来吗?不方便啊

解决方案 »

  1.   

    写程序的时候
    把excute sql语句放在try  catch 里面白!
    catch里面捕捉到了 excute  Exception不就是说明 update 出错了吗!
      

  2.   

    问题在于,有些时候sql本身不会出错,是系统没有这条记录,所以才要判断update是否成功了
      

  3.   

    所谓的成功或者不成功不是靠着返回值来判断的,只要执行了这个语句没有报错就说明成功了,
    如果你要更新的记录不存在,你可以在更新之前执行
    select count(*) from  table  where  。。
    如果返回值>0,这样子你再去更新啊!
      

  4.   

    这样我就必须增加一个输出参数来记录这个值,而很多ORM工具都有的类似ExecuteNonQueryPro这样的返回收到影响的行数的函数就没法用
      

  5.   

    请问mysql的存储过程有返回值这个说法?我记得是没有的,只有输出参数,那就必须改存储过程的签名