简体   繁体   English

MySQL存储过程错误1064

[英]Mysql stored procedure error 1064

I'm working on some code, and got stuck on this stored procedure problem... Have spent too long now looking at it, so please if someone can tell me where I am a noob with this. 我正在处理一些代码,并且陷入了这个存储过程的问题。。。花了太长时间了,所以如果有人能告诉我我是谁,请告诉我。

I get the following error: 我收到以下错误:

Error Code: 1064 You have an error in your SQL syntax; 错误代码:1064您的SQL语法错误; check the manual that corresponds to your MySQL server version for the right syntax to use near '@ownerid varchar(50); 检查与您的MySQL服务器版本相对应的手册,以在'@ownerid varchar(50)附近使用正确的语法; declare @active tinyint; 声明@active tinyint; declare @subuser tinyint; 声明@subuser tinyint; set ' at line 4 在第4行设置

on this code: 在此代码上:

    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 ;

Am new to the stored procedures, so it is properly something very simple..... Thanks in advance 这是存储过程的新手,因此它非常简单。.....在此先感谢

You should use ':=' instead of '=' when you want to pass value into variable in SELECT statement, otherwise MySQL just will compare to operands. 要在SELECT语句中将值传递给变量时,应使用':='而不是'=',否则MySQL将只与操作数进行比较。

SELECT
  active_var := active, ownerid_var := ownerid, subuser_var := subuser
FROM
  cards_tbl
WHERE
  cardhash = cardid;

Also you can use SELECT INTO statement, eg - 您也可以使用SELECT INTO语句,例如-

SELECT
  active, ownerid, subuser
INTO
  active_var, ownerid_var, subuser_var
FROM
  cards_tbl
WHERE
  cardhash = cardid;

SELECT syntax . SELECT语法

Is it maybe the missing @ 也许是失踪的@

DECLARE cardid VARCHAR(50);

...

DECLARE @cardid VARCHAR(50);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM