как получить результат хранимой процедуры для использования в другой хранимой процедуре или операторе запроса - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь создать хранимую процедуру, в которой внутри процедуры находится оператор запроса, результат которого будет использоваться в качестве параметра для другого запроса

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 голосов
/ 24 сентября 2019

Если вы должны сделать это как процедуру, вам нужно выбрать локальную переменную и использовать ее во втором запросе.учитывая

+----+----------+----------+
| 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)

Обратите внимание, что вы не можете вставить набор результатов в переменную, и то, что вы пытаетесь сделать, не будет работать вообще, если это то, что вы получите от своего первого запроса.

0 голосов
/ 24 сентября 2019
select * from records 
where record in
(
  select record_id from records2 where record_div = @adminid
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...