存储过程:
BEGIN
    DECLARE countj        INT;       -- 临时存储重复UID总数
    DECLARE i             INT;       -- 临时循环变量存储 
    DECLARE days          INT;
    DECLARE game          varchar(50);
    SET i=1;
    SELECT count(DISTINCT(days)) INTO countj FROM `count_serverinfo` WHERE gameid = '",game,"';
    SELECT days INTO days FROM `count_serverinfo` WHERE gameid = '",game,"' GROUP BY days asc ;
  WHILE i <= countj DO
BEGIN
SELECT game,serverorder,serverid,MAX(IF(days='",days,"',amountcount,0.00)) AS '",days,"' FROM count_serverinfo GROUP BY serverid ORDER BY serverorder DESC;
END;
SET i = i +1;
    END WHILE;
END
我应该怎么在php文件中调用勒?上网查了一下,用网上的调用方法但是不成功,第一次弄存储过程,求指教,我感觉我写的存储过程也有问题,我该怎么办

解决方案 »

  1.   

    Error:Incorrect number of arguments for PROCEDURE my6543db.diyi; expected 0, got 2
    Errno:1318
    SQL::call diyi('1',game)  老报这个错误该怎么办
      

  2.   

    $sql="call diyi('@game','@days')";
    $query  = $db->query($sql);
    $result = $db->query('select @game,@days');  这是我获取的代码,主要是我第一次写,弄不明白啊,哪里错了,怎么修改都不知道
      

  3.   

    参数现在完整了吧
    BEGIN
        DECLARE countj        INT;       -- 临时存储重复UID总数
        DECLARE i             INT;       -- 临时循环变量存储 
    DECLARE days          INT;
        DECLARE game          varchar(50) character  set gbk;
        DECLARE game1         varchar(50) character  set gbk;
        DECLARE serverorder   INT;
        DECLARE serverid      INT;
        DECLARE day1          INT;
    SET i=1;
        SELECT count(DISTINCT(days)) INTO countj FROM `count_serverinfo` WHERE gameid = '",game,"';
        SELECT days INTO days FROM `count_serverinfo` WHERE gameid = '",game,"' GROUP BY days asc ;
      WHILE i <= countj DO
    BEGIN
    SELECT game,serverorder,serverid,MAX(IF(days='",days,"',amountcount,0.00)) AS '",days,"' INTO game1,serverorder,serverid,day1 FROM count_serverinfo GROUP BY serverid ORDER BY serverorder DESC;
    END;
    SET i = i +1;
        END WHILE;
    END
      

  4.   

    nocreate procedure ....
      

  5.   

    diyi 函数定义中不是两个参数,你需要检查一下。
      

  6.   

    create DEFINER=`root`@`localhost` PROCEDURE procedure diyi(INOUT game varchar(20), OUT days int, OUT game1 varchar(50), OUT serverorder INT,OUT serverid INT,OUT day1 INT)  
    BEGIN
        DECLARE countj        INT;       -- 临时存储重复UID总数
        DECLARE i             INT;       -- 临时循环变量存储 
    DECLARE days          INT;
        DECLARE game          varchar(50) character  set gbk;
        DECLARE game1         varchar(50) character  set gbk;
        DECLARE serverorder   INT;
        DECLARE serverid      INT;
        DECLARE day1          INT;
    SET i=1;
        SELECT count(DISTINCT(days)) INTO countj FROM `count_serverinfo` WHERE gameid = '",game,"';
        SELECT days INTO days FROM `count_serverinfo` WHERE gameid = '",game,"' GROUP BY days asc ;
      WHILE i <= countj DO
    BEGIN
    SELECT game,serverorder,serverid,MAX(IF(days='",days,"',amountcount,0.00)) AS '",days,"' INTO game1,serverorder,serverid,day1 FROM count_serverinfo GROUP BY serverid ORDER BY serverorder DESC;
    END;
    SET i = i +1;
        END WHILE;
    END   怎么第一句话老出错啊