2012-01-09 11 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はqestionのポイントではなく、クエリの値を変数に設定します。 SET xVarA:= Single TableからCOUNT(*)を選択します。動作しませんが、カッコ内のクエリを配置することによって動作します。 SET xVarA:=(SELECT COUNT(*)FROM SingleTable);ありがとう! –

+0

@ 491243何とか前にこれを逃した、むしろ遅れて私の答えを更新することになった。ありがとう。 –