在 mysql 工作台中调用存储过程不会将值返回到结果网格

问题描述 投票:0回答:1

我很确定我使用了正确的语法,但它没有将 movie_id、movie_name、leading_actor1_idleading_actor2_id 或 release_year 返回到结果网格。

DELIMITER //
CREATE PROCEDURE sp_GetMoviesByActor(IN param_actor_id int(5))
BEGIN
    select movie_id, movie_name, leading_actor1_id, leading_actor2_id, release_year
    from movie
    where leading_actor1_id=param_actor_id;
END //
DELIMITER ;  

CALL sp_GetMoviesByActor(1)

我尝试过其他变体来调用结果,但似乎也不起作用。我正在使用最新版本的 mysql 工作台,并且连接似乎很好,因为我能够从查询中检索其他数据。调用该过程时我也没有收到任何错误,只是结果网格由于某种原因没有返回任何数据。

mysql mysql-workbench
1个回答
0
投票

假设您的数据库架构和数据设置正确,您提供的用于创建存储过程并调用它的代码看起来是正确的。 但是,如果您没有获得预期结果,请检查以下几点。

  1. 添加错误处理,它将帮助您识别是否存在数据检索问题或其他问题。

示例代码:

DELIMITER //
CREATE PROCEDURE sp_GetMoviesByActor(IN param_actor_id INT(5)) 
BEGIN
DECLARE no_data CONDITION FOR SQLSTATE '02000';

SELECT movie_id, movie_name, leading_actor1_id, leading_actor2_id, release_year
FROM movie
WHERE leading_actor1_id = param_actor_id;

IF ROW_COUNT() = 0 THEN
    SIGNAL SQLSTATE '02000'
    SET MESSAGE_TEXT = 'No data found for the given actor ID';
END IF;
END //
DELIMITER ;
  1. 检查 MySQL 服务器日志中是否有与存储过程执行相关的任何错误消息或警告。这些日志可以提供有关可能出现问题的宝贵信息。

考虑完这些要点后,如果您仍然没有得到预期的结果,请提供有关数据库架构和数据的更多详细信息,以及您遇到的任何错误消息,以便我可以进一步帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.