这个存储过程delimiter // ;
create procedure test(in record_count int)
begin
-- 以下这句出错
select * from friend limit 0,(select record_count);
end;
//怎么把存储过程的输入参数用到select语句的limit的第二个参数中啊

解决方案 »

  1.   

    prepare asql from concat('select * from friend limit 0,',record_count);
    execute  asql;
      

  2.   

    LIMIT后的参数无法直接使用变量。你可以使用 prepare来执行一个事先准备好的SQL语句。set @cnt = 100;
    set @sql = concat('select * from friend limit 0,',@cnt);
    prepare stmt from @sql;
    execute stmt;
    DEALLOCATE PREPARE stmt;
      

  3.   

    更多关于PREPARE语法可以参考手册中的说明和例子。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html