Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL存储过程不工作_Mysql_Sql_Stored Procedures - Fatal编程技术网

MySQL存储过程不工作

MySQL存储过程不工作,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我是MySQL存储过程的新手,遇到以下错误: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“DECLARE v_lang TINYINT(1)DEFAULT“1”附近使用的正确语法;在第7行为选择“l”声明游标 尝试生成此存储过程时: DELIMITER // CREATE PROCEDURE UpdateUser(IN p_uid INT(11)) BEGIN DECLARE v_last_login TIMESTAMP DEFAULT '20

我是MySQL存储过程的新手,遇到以下错误:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“DECLARE v_lang TINYINT(1)DEFAULT“1”附近使用的正确语法;在第7行为选择“l”声明游标

尝试生成此存储过程时:

DELIMITER //
CREATE PROCEDURE UpdateUser(IN p_uid INT(11))
BEGIN

DECLARE v_last_login    TIMESTAMP   DEFAULT '2012-01-01 00:00:00' ;
SELECT `last_login`  INTO v_last_login FROM `user` WHERE `id`= p_uid;

DECLARE v_lang  TINYINT(1)  DEFAULT '1';

DECLARE cursor_lang CURSOR FOR SELECT `l_id` INTO v_lang FROM `user_lang` WHERE `user_id` = p_uid LIMIT 0 , 5;

DECLARE no_more_l   TINYINT(1)  DEFAULT 0;
DECLARE  CONTINUE HANDLER FOR NOT FOUND SET  no_more_l = 1;

OPEN cursor_lang;

FETCH  cursor_lang INTO v_lang_str;
REPEAT 

UPDATE user SET `last_login`=CURRENT_TIMESTAMP() WHERE `id`=p_uid AND `l_id` = v_lang_str;

 UNTIL  no_more_l = 1
 END REPEAT;
 CLOSE  cursor_lang;

END //
DELIMITER ;

我做错了什么?

您确定可以使用字符串作为数字变量的默认值吗

试一试


您确定可以使用字符串作为数字变量的默认值吗

试一试


你不应该这样做吗

DECLARE v_lang  TINYINT(1)  DEFAULT 1;
而不是

DECLARE v_lang  TINYINT(1)  DEFAULT '1';

你不应该这样做吗

DECLARE v_lang  TINYINT(1)  DEFAULT 1;
而不是

DECLARE v_lang  TINYINT(1)  DEFAULT '1';

谢谢你的建议。问题是,在执行任何查询之前,必须声明每个变量。当然,我也不应该把数字加引号。

谢谢你的建议。问题是,在执行任何查询之前,必须声明每个变量。当然,我也不应该在引号中加数字。

问题是在进行任何查询之前必须声明每个变量问题是在进行任何查询之前必须声明每个变量感谢Dualthlon的更新。这真的应该是对GregHNZ或Frankline的回答的评论——因为他们正确地回答了这个问题。请记住给他们打勾和/或投票!谢谢你的更新,Dualthlon。这真的应该是对GregHNZ或Frankline的回答的评论——因为他们正确地回答了这个问题。请记住给他们打勾和/或投票!