Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用第二个存储过程中的值调用存储过程以生成单个结果?_Mysql_Stored Procedures_Stored Functions - Fatal编程技术网

Mysql 使用第二个存储过程中的值调用存储过程以生成单个结果?

Mysql 使用第二个存储过程中的值调用存储过程以生成单个结果?,mysql,stored-procedures,stored-functions,Mysql,Stored Procedures,Stored Functions,我已经决定自学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 creat

我已经决定自学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 ;
由此,我创建了一个简单的通用存储过程,如下所示:

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\u id时,它将从posts表中的相应行返回post数据,还将在author\u id列上调用getPerson过程,以便返回的单个结果将由以下字段组成:
post\u id、long\u name、index\u name、body\u text、created

我已经试过几个小时了,虽然我可能在某一点上找到了正确的方法(在getPerson的结果上使用join?),但我的sql语法并没有扩展到PHP的单个stationMySQL调用之外。我的问题是:

  • 这是我想要做的事情的一种普通/合理的方法,还是有更好的方法?(我不想使用脚本语言)
  • 如果是这样的话,有人可以分享一下如何做到这一点吗
  • 我对这类事情使用程序是正确的,还是功能一样好/更好

  • 谢谢你的帮助

    为什么不创建一个名为viewPeoplePosts的视图,该视图将人及其帖子组合在一起。然后,您可以修改存储的进程以查询视图。让视图完成所有繁重的工作,让存储过程简单地返回结果