查询和存储过程返回不同的结果

时间:2014-10-06 15:27:17

标签: mysql sql stored-procedures

我正在使用MySQL和MySQL工作台。有人可以帮助我,因为我正在失去理智!

我按如下方式运行查询:

# Retrieve user_team from user
SELECT CS_USER_TEAMS_ID
FROM classicseasonmodel_classicseasonuserteam 
WHERE user_id = 2;

哪种方法正常..我得到CS_USER_TEAMS_ID的值 2

ss_query

但是,当我使用输入参数创建相同查询的存储过程时..

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

SS_StoredProcedure

有人可以解释我在这里有多愚蠢吗?感谢。

1 个答案:

答案 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之间的差异,是不同的变量。