写了一个如下的存储过程,在编译的时候 总报错!create PROCEDURE user_list(in pageno INTEGER(11),in pagecount INteger(11))
begin
 declare ino INTEGER(11);
 SELECT ((pageno-1)*pagecount+1) into ino;
 select * from users LIMIT ino,pagecount;
end;You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ino,pagecount;
end' at line 5这是什么原因?请高人解答!我用的是mysql 5.5的版本

解决方案 »

  1.   

    用动态执行SQL语句的方法
    PREPARE stmt1 FROM 'select * from users LIMIT ?,?';
    SET @a = ino;
    SET @b = pagecount
    EXECUTE stmt1 USING @a, @b;or
    set dd=conact('select * from users LIMIT',ino,pagecount)
    PREPARE stmt1 FROM dd
    EXECUTE stmt1
      

  2.   

    使用了动态的执行,但还是会报这类错误!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dd;
     EXECUTE stmt1; 
     
      

  3.   

    set dd=conact('select * from users LIMIT ',ino,',',pagecount)
    PREPARE stmt1 FROM dd
    EXECUTE stmt1 
      

  4.   

    drop procedure if exists user_day_list;
    create PROCEDURE user_day_list(in pageno INTEGER(11),in pagecount INteger(11))
    begin declare dd,stmt1 VARCHAR(200); select CONCAT('select id from users LIMIT ',pageno,',',pagecount) into dd; 
     
     PREPARE stmt1 from @dd;
     EXECUTE stmt1;
    end;
    call user_day_list(1,20);我是这么写的,编译通过了,但在调用的时候 出现了下面的错误。
    Query OK, 0 rows affected (47 ms)You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
      

  5.   

    ELIMITER $$
    drop procedure if exists `rr`.`rr`$$
    CREATE PROCEDURE `rr`.`rr`(in pageno INTEGER(11),in pagecount INteger(11))
    BEGIN
    set @dd=CONCAT('select id from tt LIMIT ',pageno,',',pagecount);
    PREPARE stmt1 from @dd;
    EXECUTE stmt1; 
        END$$
    在MYSQL6下测试通过
      

  6.   

    我博客上有好多例子,随便搞一个就可以了。看prepare statement
      

  7.   

    dELIMITER $$
    drop procedure if exists `rr`.`rr`$$
    CREATE PROCEDURE `rr`.`rr`(in pageno INTEGER(11),in pagecount INteger(11))
    BEGIN
    set @dd=CONCAT('select id from tt LIMIT ',pageno,',',pagecount);
    PREPARE stmt1 from @dd;
    EXECUTE stmt1;
        END$$
    在MYSQL6下测试通过
      

  8.   

    谢谢!mysql 6.0 比 5.0 稳定性好吗?
      

  9.   

    6.0还是ALPHA版。尽量不要用!!!
      

  10.   

    谢谢,经过测试 正常了发现call 如何和create 在一个sql 执行窗口里面 就出问题。
      

  11.   

    为什么要加上",",(‘,colname,’)?
    另外为什么你喜欢加上反引号??
    能不能让count(*),自己为null是返回0,而不是在前边判断???