2012-01-09 177 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