我如何获取存储过程结果以用于另一个存储过程或查询语句

时间:2019-09-24 06:37:40

标签: mysql stored-procedures

我正在尝试创建一个存储过程,其中在该过程中是一条查询语句,其结果将用作另一个查询的参数

CREATE DEFINER=`root`@`localhost` PROCEDURE `getRecActive`(
IN  adminid VARCHAR(25))
BEGIN
   select record_id from records2 where record_div = @adminid
   //i want to use record_id result to the next query
   select * from records where record = "record_id";
END

2 个答案:

答案 0 :(得分:0)

select * from records 
where record in
(
  select record_id from records2 where record_div = @adminid
)

答案 1 :(得分:0)

如果必须按过程执行此操作,则需要选择一个局部变量并在第二个查询中使用它。给

+----+----------+----------+
| id | username | photo    |
+----+----------+----------+
|  1 | aaa      | john.png |
|  2 | Jane     | jane.png |
|  3 | Ali      |          |
+----+----------+----------+
3 rows in set (0.00 sec)

drop procedure if exists p;
delimiter $$

CREATE PROCEDURE p(
IN  adminid VARCHAR(25))
BEGIN
    declare vid int;
   select id into vid from users where username = adminid;

   select id,username,photo from users where id = vid;
END $$

delimiter ;

call p('aaa')

+----+----------+----------+
| id | username | photo    |
+----+----------+----------+
|  1 | aaa      | john.png |
+----+----------+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.02 sec)

请注意,您不能将结果集填充到变量中,而如果那是您从第一个查询中得到的结果,那么您尝试执行的操作将根本不起作用。

相关问题