我正在使用MySQL和MySQL工作台。有人可以帮助我,因为我正在失去理智!
我按如下方式运行查询:
# Retrieve user_team from user
SELECT CS_USER_TEAMS_ID
FROM classicseasonmodel_classicseasonuserteam
WHERE user_id = 2;
哪种方法正常..我得到CS_USER_TEAMS_ID
的值 2 :
但是,当我使用输入参数创建相同查询的存储过程时..
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN user_id INT)
BEGIN
# Retrieve user team from user_id
SELECT CS_USER_TEAMS_ID
FROM classicseasonmodel_classicseasonuserteam
WHERE user_id = @user_id;
END
..它什么都不返回( null )
有人可以解释我在这里有多愚蠢吗?感谢。
答案 0 :(得分:1)
尝试:
DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN p_user_id INT)
BEGIN
# Retrieve user team from user_id
SELECT CS_USER_TEAMS_ID
FROM classicseasonmodel_classicseasonuserteam
WHERE user_id = p_user_id;
END//
DELIMITER ;
重要的是指出9.4. User-Defined Variables和常规参数13.1.15. CREATE PROCEDURE and CREATE FUNCTION Syntax之间的差异,是不同的变量。