Mysql存储过程错误1064
我正在编写一些代码,遇到了这个存储过程问题。。。我已经花了太长时间在看它了,所以如果有人能告诉我,我在哪里,这是一个noob 我得到以下错误: 错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在'@ownerid varchar(50)附近使用的正确语法; 声明@activetinyint; 声明@subuser tinyint; 在第4行设置“1” 关于此代码:Mysql存储过程错误1064,mysql,stored-procedures,Mysql,Stored Procedures,我正在编写一些代码,遇到了这个存储过程问题。。。我已经花了太长时间在看它了,所以如果有人能告诉我,我在哪里,这是一个noob 我得到以下错误: 错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在'@ownerid varchar(50)附近使用的正确语法; 声明@activetinyint; 声明@subuser tinyint; 在第4行设置“1” 关于此代码: DELIMITER // USE `test`// DROP PROCEDURE
DELIMITER //
USE `test`//
DROP PROCEDURE IF EXISTS `getAccount`//
CREATE DEFINER=`peter`@`%` PROCEDURE `getAccount`( IN cid VARCHAR(20))
BEGIN
DECLARE cardid VARCHAR(50);
DECLARE @ownerid VARCHAR(50);
DECLARE @active TINYINT;
DECLARE @subuser TINYINT;
SET cardid = MD5( cid + SHA1(cid + 'a salt value'));
SELECT @active = active, @ownerid = ownerid, @subuser = subuser FROM cards_tbl WHERE cardhash = cardid;
IF @active = 1 THEN
IF @subuser = 1 THEN
SELECT subuser_m2s_tbl.name,subuser_m2s_tbl.image, user_saldo.saldo AS credits FROM subuser_m2s_tbl
JOIN user_saldo ON subuser_m2s_tbl.subhash = user_saldo.userhash
WHERE subuser_m2s_tbl.subhash = @ownerid;
ELSE
SELECT user_m2s_tbl.name,user_m2s_tbl.image, user_saldo.saldo AS credits FROM user_m2s_tbl
JOIN user_saldo ON user_m2s_tbl.userhash = user_saldo.userhash
WHERE user_m2s_tbl.userhash = @ownerid;
END IF;
END IF;
END$$
DELIMITER ;
我对存储过程不熟悉,所以它确实非常简单。。。。。
提前谢谢可能是丢失的吗@
DECLARE cardid VARCHAR(50);
...
DECLARE @cardid VARCHAR(50);
在SELECT语句中将值传递给变量时,应该使用“:=”而不是“=”,否则MySQL只会与操作数进行比较
SELECT
active_var := active, ownerid_var := ownerid, subuser_var := subuser
FROM
cards_tbl
WHERE
cardhash = cardid;
也可以使用SELECTINTO语句,例如-
SELECT
active, ownerid, subuser
INTO
active_var, ownerid_var, subuser_var
FROM
cards_tbl
WHERE
cardhash = cardid;
.尝试删除变量前面的@。。这实际上让过程运行起来了(谢谢,到目前为止),但现在我得到了3个变量作为结果,而接下来的2个select语句中的一个没有任何结果,这是我期望得到的?!?有什么帮助吗?到目前为止,谢谢你的帮助和建议,我只剩下一个问题,那就是我的md5/sha1线路不工作,有人能帮我吗?显然mysql不理解它?不知道为什么,但这行没有返回正确的答案:SET cardd=MD5(cid+SHA1(cid+a salt value));制定一个问题,添加有关该问题的更多信息。也许,写一个新问题。