2012-01-09 180 views
1

如何声明变量并设置一个值,该值是稍后对查询的返回值。MySQL将返回值分配给变量

示例存储过程:

DELIMITER $$ 

CREATE PROCEDURE `sampledb`.`SetVariableEx`() 

    BEGIN 

     -- declare variable 
     DECLARE xVarA INT;     
     DECLARE xVarB INT;  

     -- in this line, i would like to set a value on xVarA which is a COUNT 
     -- of record from table SINGLETABLE 
     -- i am getting error on this line. 
     SELECT xVarA := COUNT(*) FROM SingleTable; 

     -- the value of xVarA is added by 1 and set it to xVarB 
     SET xVarB = xVarA + 1; 

     -- insert the value of xVarB to the table SINGLETABLE 
     INSERT INTO SingleTable(SingleColumn) VALUES (xVarB); 

     -- lastly, display all records. 
     SELECT * FROM SingleTable; 

    END$$ 

DELIMITER ; 

会怎么做呢?

回答

2

尝试以下操作:

SET xVarA := (SELECT COUNT(*) FROM SingleTable); 

然而,在这个例子中,你有没有考虑using an auto auto-incrementing value,而不是管理自己的价值?

+0

AutoIncrement不是我在问题中的重点,而是将查询中的值设置为变量。 SET xVarA:= SELECT COUNT(*)FROM SingleTable;不起作用,但通过将查询放在括号内起作用。 SET xVarA:=(SELECT COUNT(*)FROM SingleTable);谢谢! – 2012-01-09 13:53:23

+0

@ 491243不知何故错过了这个,而是迟到了,以更新我的答案。谢谢。 – 2013-09-20 17:19:09