我已决定自学 MySQL 中的存储过程,但由于语法与我通常的基础(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 时,它会从帖子表中的相应行返回帖子数据,而且在 author_id 列上调用 getPerson 过程,以便返回的单个结果将包含以下字段:post_id, long_name, index_name, body_text, created
。
我已经试错了几个小时,虽然我可能曾经有过正确的方法(在 getPerson 的结果上使用连接?),但我的 sql 语法并没有超出单语句 MySQL 调用的范围来自 PHP。我的问题是:
- 这是我想做的常见/合理的方法还是有更好的方法?(我不想使用脚本语言)
- 如果是这样,有人可以分享如何做到这一点吗?
- 我对这种事情使用程序是正确的,还是一个功能一样好/更好?
谢谢你的帮助!