【发布时间】:2012-08-02 17:23:41
【问题描述】:
我正在编写一些代码,但被这个存储过程问题困住了......现在花了太长时间看它,所以请如果有人能告诉我我在哪里是一个菜鸟。
我收到以下错误:
错误代码: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 ;
我是存储过程的新手,所以它非常简单...... 提前致谢
【问题讨论】:
-
尝试删除变量前面的@..
-
这实际上让程序运行(感谢到目前为止),但现在我得到了 3 个变量作为结果,而接下来的 2 个选择语句之一没有任何结果,这是我期望得到的?!?有什么帮助吗?