MySQL临时变量赋值

时间:2012-11-08 05:47:14

标签: mysql stored-procedures mysqli prepared-statement

我有一张如下表所示的表格。

CREATE TABLE People(PeopleId INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
                    Name VARCHAR(255), 
                    Age INT);

INSERT INTO People(Name,   Age)
            VALUES('Sam',  25),
                  ('John', 24),
                  ('Ria',  14),
                  ('Diya', 23),
                  ('Topel',19),
                  ('Mac',  45);

我创建了一个程序,我将临时变量age用于某种目的。

DROP PROCEDURE IF EXISTS Sample;
CREATE PROCEDURE Sample()
BEGIN
  SELECT @Age = Age
    FROM People
   WHERE PeopleId = 4;

   SELECT * 
     FROM People;
END;

不要问为什么我将年龄存储在临时变量中,因为上述不是确切的程序。

当我运行该过程时,临时变量将显示为结果集之一以及我为select查询获得的结果集。如何在分配后避免将临时变量显示为结果集的一部分?

1 个答案:

答案 0 :(得分:10)

尝试这个,

SET @Age = (SELECT Age FROM People WHERE PeopleId = 16);

SELECT Age INTO @Age
FROM People
WHERE PeopleId = 16;