mysql调用存储过程返回值,求大神

yanfangphp 2012-07-10 11:19:29
存储过程:
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文件中调用勒?上网查了一下,用网上的调用方法但是不成功,第一次弄存储过程,求指教,我感觉我写的存储过程也有问题,我该怎么办
...全文
627 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-07-10
  • 打赏
  • 举报
回复
diyi 函数定义中不是两个参数,你需要检查一下。
wwwwb 2012-07-10
  • 打赏
  • 举报
回复
no

create procedure ....
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
参数现在完整了吧
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
wwwwb 2012-07-10
  • 打赏
  • 举报
回复
存储过程的完整代码,检查参数个数
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

是SP完整代码
[/Quote] 老大 sp什么意思啊,上边的代码关于我写的存储过程的 都贴出来了啊
wwwwb 2012-07-10
  • 打赏
  • 举报
回复
是SP完整代码
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
$sql="call diyi('@game','@days')";
$query = $db->query($sql);
$result = $db->query('select @game,@days'); 这是我获取的代码,主要是我第一次写,弄不明白啊,哪里错了,怎么修改都不知道
wwwwb 2012-07-10
  • 打赏
  • 举报
回复
完整代码是什么,参数数目不对?
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
Error:Incorrect number of arguments for PROCEDURE my6543db.diyi; expected 0, got 2
Errno:1318
SQL::call diyi('1',game) 老报这个错误。。。该怎么办
wwwwb 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yanfangphp 的回复:]

我知道什么错了
[/Quote]
呵呵,自己解决更好
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
我知道什么错了
yanfangphp 2012-07-10
  • 打赏
  • 举报
回复
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 怎么第一句话老出错啊

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧