我决定自学MySQL中的存储过程,但是语法与我常用的st((php / javascript)非常不同,我希望确定我对这些过程的功能的理解是否正确,如果是这样,我如何实现我的目标。
目前,我有两个表,'人'和'帖子',如下所示:
people
person_id INT(10)
first_name VARCHAR(32)
last_name VARCHAR(64)
posts
post_id INT(10)
author_id INT(10)
body_text TEXT
created DATETIME
由此,我创建了一个简单的通用存储过程,如下所示:
DELIMITER //
CREATE PROCEDURE getPerson(IN person INT(10))
BEGIN
SELECT CONCAT(first_name, ' ', last_name) as long_name, CONCAT(last_name, ', ', first_name) as index_name FROM people WHERE person_id = person;
END //
DELIMITER ;
到目前为止一直很好,但是现在我的理解失败了...我想创建一个名为'getPost'的第二个过程,当传递给post_id时,将从posts表中的相应行返回post数据,还要在author_id列上调用getPerson过程,以便返回的单个结果将包含以下字段:post_id, long_name, index_name, body_text, created
。
我已经试用了几个小时的错误,虽然我可能在某一时刻采用了正确的方法(对getPerson的结果使用连接?),但我的sql语法并没有超出单一的范围 - MySQL从MySQL调用的语句。我的问题是:
感谢您的帮助!
答案 0 :(得分:0)
为什么不创建一个名为 viewPeoplePosts 的视图,该视图结合了人员及其帖子。然后,您可以修改存储过程以查询视图。让视图完成所有艰苦的工作,让存储过程只返回结果。