2012-01-09 2 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: = SELECT COUNT (*) FROM SingleTable; не работает, но, поставив запрос внутри Parenthesis, работает. SET xVarA: = (SELECT COUNT (*) FROM SingleTable); благодаря! –

+0

@ 491243 Как-то пропустил это раньше, довольно запоздало обернулся, чтобы обновить свой ответ. Благодарю. –

Смежные вопросы