[英]Mysql stored procedure error 1064
我正在处理一些代码,并且陷入了这个存储过程的问题。。。花了太长时间了,所以如果有人能告诉我我是谁,请告诉我。
我收到以下错误:
错误代码:1064您的SQL语法错误; 检查与您的MySQL服务器版本相对应的手册,以在'@ownerid varchar(50)附近使用正确的语法; 声明@active tinyint; 声明@subuser tinyint; 在第4行设置
在此代码上:
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 ;
这是存储过程的新手,因此它非常简单。.....在此先感谢
要在SELECT语句中将值传递给变量时,应使用':='而不是'=',否则MySQL将只与操作数进行比较。
SELECT
active_var := active, ownerid_var := ownerid, subuser_var := subuser
FROM
cards_tbl
WHERE
cardhash = cardid;
您也可以使用SELECT INTO语句,例如-
SELECT
active, ownerid, subuser
INTO
active_var, ownerid_var, subuser_var
FROM
cards_tbl
WHERE
cardhash = cardid;
SELECT语法 。
也许是失踪的@
DECLARE cardid VARCHAR(50);
...
DECLARE @cardid VARCHAR(50);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.