各位同仁:
大家好!
因公司业务需求,需要把mysql5.5数据库迁移到Liunx的mysql5.1上,迁移过程还算顺利,但是迁移后测试发现很多存储过程不能执行,打开代码发现原先的存储过程的分页功能保存报错,如:存储过程参数为:IN p_page int, IN p_limit int 存储过程体为:select * from abc limit p_page,p_limit; 如果写成:select * from abc limit 0,10 就好了,为什么5.1版本不支持limit + IN参数的方式,而必须写死呢?
网上也查了资料,说是5.5才支持limit参数,5.1只能预加载分页,如:
SET @p_sql = CONCAT(‘select * from abc ’,' limit ',p_page ,',',p_limit);
prepare str from @p_sql;
execute str;
deallocate prepare str;
那我很多存储过程都有问题啊,而且复杂sql的情况真的很麻烦,请问大家有没有其他方式解决这个问题的? 比较急,在线等,请大家给个解决办法,非常感谢!
大家好!
因公司业务需求,需要把mysql5.5数据库迁移到Liunx的mysql5.1上,迁移过程还算顺利,但是迁移后测试发现很多存储过程不能执行,打开代码发现原先的存储过程的分页功能保存报错,如:存储过程参数为:IN p_page int, IN p_limit int 存储过程体为:select * from abc limit p_page,p_limit; 如果写成:select * from abc limit 0,10 就好了,为什么5.1版本不支持limit + IN参数的方式,而必须写死呢?
网上也查了资料,说是5.5才支持limit参数,5.1只能预加载分页,如:
SET @p_sql = CONCAT(‘select * from abc ’,' limit ',p_page ,',',p_limit);
prepare str from @p_sql;
execute str;
deallocate prepare str;
那我很多存储过程都有问题啊,而且复杂sql的情况真的很麻烦,请问大家有没有其他方式解决这个问题的? 比较急,在线等,请大家给个解决办法,非常感谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货