在MySQL存储过程的其他语句中使用在一个选择查询中获得的结果

时间:2016-03-05 11:03:54

标签: mysql stored-procedures

我正在编写一个存储过程,我从一个表中获取数据,并根据我希望在其他操作中使用该数据的数据。 E.g。

select id,name,email,mobile,user_type from users

基于user_type,我想使用id字段进行进一步处理。例如,

if(user_type=1) 
   begin
        select * from some_table where Userid = id
   End
Else if (user_type=2)
  begin
      select * from some_other_table where Userid = id
  End

任何人都可以为我提供基本语法吗

1 个答案:

答案 0 :(得分:0)

您可以在过程中declare个变量,然后使用SELECT ... INTO ... FROM语句填充它们。然后,这些变量可以在IF THEN ELSE表达式中使用。

DELIMITER $$
CREATE PROCEDURE test()
BEGIN
   DECLARE temp_id, temp_user_type INT;
   DECLARE temp_name, temp_email, temp_mobile VARCHAR(100);

   SELECT id,name,email,mobile,user_type 
   INTO temp_id, temp_name, temp_email, temp_mobile, temp_user_type FROM users WHERE id = 1;

   IF temp_user_type = 1 THEN 
        SELECT * FROM some_table WHERE Userid = temp_id     
   ELSEIF temp_user_type = 2 THEN
        SELECT * FROM some_other_table WHERE Userid = temp_id
   ELSE 
        --
   END IF;
END$$