我很确定我使用了正确的语法,但它没有将 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 工作台,并且连接似乎很好,因为我能够从查询中检索其他数据。调用该过程时我也没有收到任何错误,只是结果网格由于某种原因没有返回任何数据。
假设您的数据库架构和数据设置正确,您提供的用于创建存储过程并调用它的代码看起来是正确的。 但是,如果您没有获得预期结果,请检查以下几点。
示例代码:
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 ;
考虑完这些要点后,如果您仍然没有得到预期的结果,请提供有关数据库架构和数据的更多详细信息,以及您遇到的任何错误消息,以便我可以进一步帮助您。