如何将输入存储过程的参数传递到游标中
create procedure test(m int, n int)
.....
declare  gbmes_csr CURSOR FOR SELECT id,userLogId,accessTime,minid FROM aUa limit m,n;
这样写编译不能通过, 如何改写
上面的存储过程 (我在外面改表的行数,这样可以灵活的处理
否则在代码里改太麻烦)

解决方案 »

  1.   

    create procedure test(m int, n int) 
    ...
     declare am int;
     declare an int;
    set am=m;
    set an=n;
    declare  gbmes_csr CURSOR FOR SELECT id,userLogId,accessTime,minid FROM aUa limit am,nn;还是不能编译通过
      

  2.   

    limit 只能是常数,不可以是变量。要看你的具体需求功能是什么。一般是用prepare 来实现这种功能,先生成一个包含你需要的SQL语句的字符串,然后prepare , execute.
      

  3.   

    反复检测发现  mysql不认declare  gbmes_csr CURSOR FOR SELECT id,userLogId,accessTime,minid FROM aUa where id >am and id <an
    这里am 和 an 都是输入变量。
    难道mysql的游标不支持wher后面的变量
      

  4.   

    我的游标
    declare  gbmes_csr CURSOR FOR SELECT id,userLogId,accessTime,minid FROM aUa where id >am and id <an 
    他不报编译错误  
    但是执行发现始终没有发生作用  (am an 为传入存储过程的参数)后来我改成declare  gbmes_csr CURSOR FOR SELECT id,userLogId,accessTime,minid FROM aUa where id >1and id <10   马上ok 什么都好啦 
      

  5.   

    把你的 create procedure 语句简化后贴出来看看。否则我自己随便试一下未必能模拟你的问题。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧