mysql 存储过程 into 赋值问题

风.foxwho 2011-10-26 03:31:54
第一个问题

SELECT cdaytime INTO tcdaytime,uid INTO tcuid FROM sz_app_daylogin AS d WHERE uid=iuid;

为什么在一个 SELECT 里面 into 2此赋值就出错
错误信息
-------------
Undeclared variable: uid

第二个问题错误信息
-------------------------
Error Code : 1064
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 'begin
update sz_app_daylogin set cnum=cnum+1,cdaytime=tcdaytime where uid=iui' at line 11

以下是关于这个错误的SQL



DELIMITER $$

CREATE
PROCEDURE `login_updatedaylogin`(IN iuid INT,IN tnowtime INT,IN righttime INT)

BEGIN
DECLARE tcdaytime INT DEFAULT 0;
DECLARE tcuid INT DEFAULT 0;

SELECT cdaytime INTO tcdaytime FROM sz_app_daylogin AS d WHERE d.uid=iuid;
SELECT d.uid INTO tcuid FROM sz_app_daylogin AS d WHERE d.uid=iuid;
IF tcuid>0 THEN
BEGIN
IF tcdaytime=righttime
BEGIN
UPDATE sz_app_daylogin SET cnum=cnum+1,cdaytime=tcdaytime WHERE uid=iuid;#连续加1
END;
ELSE
BEGIN
IF tcdaytime=tnowtime
BEGIN
#同一天登录,已经加1,忽略
END;
ELSE
BEGIN
UPDATE sz_app_daylogin SET cnum=0,cdaytime=tcdaytime WHERE uid=iuid;#不连续,清零
END;
END IF;
END
END IF;
END;
ELSE
BEGIN
INSERT INTO sz_app_daylogin(`uid`,`cdaytime`,`cnum`) VALUES (iuid,tnowtime,0);
END;
END IF;
END;


DELIMITER ;
...全文
292 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
风.foxwho 2011-10-26
  • 打赏
  • 举报
回复
汗我知道了。少了THEN


DELIMITER $$

CREATE
PROCEDURE `login_updatedaylogin`(IN iuid INT,IN tnowtime INT,IN righttime INT)

BEGIN
DECLARE tcdaytime INT DEFAULT 0;
DECLARE tcuid INT DEFAULT 0;

SELECT cdaytime,uid INTO tcdaytime,tcuid FROM sz_app_daylogin WHERE uid=iuid;
#select cdaytime into tcdaytime from sz_app_daylogin as d where d.uid=iuid;
#select d.uid into tcuid from sz_app_daylogin as d where d.uid=iuid;
IF tcuid>0 THEN
BEGIN
IF tcdaytime=righttime THEN
BEGIN
UPDATE sz_app_daylogin SET cnum=cnum+1,cdaytime=tcdaytime WHERE uid=iuid;#连续加1
END;
ELSE
BEGIN
IF tcdaytime=tnowtimet THEN
BEGIN
#同一天登录,已经加1,忽略
END;
ELSE
BEGIN
UPDATE sz_app_daylogin SET cnum=0,cdaytime=tcdaytime WHERE uid=iuid;#不连续,清零
END;
END IF;
END
END IF;
END;
ELSE
BEGIN
INSERT INTO sz_app_daylogin(`uid`,`cdaytime`,`cnum`) VALUES (iuid,tnowtime,0);
END;
END IF;
END;


DELIMITER ;
风.foxwho 2011-10-26
  • 打赏
  • 举报
回复
第2个问题呢
WWWWA 2011-10-26
  • 打赏
  • 举报
回复
SELECT cdaytime,cdaytime INTO tcdaytime,uid INTO tcuid FROM sz_app_daylogin AS d WHERE uid=iuid;

56,679

社区成员

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

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