2013-06-28 1 views
0

У меня есть следующая хранимая процедура:Как я могу получить и присвоить возвращаемое значение из MySQL хранимого процедура

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `getUserIdByLogin`(userId VARCHAR(255)) 
BEGIN 
    SELECT id FROM `userdata` WHERE login = userId; 
END 

Я хочу объявить новую переменную @tmp для, например, и сделать что-л. следующим образом:

SET @tmpValue = CALL getUserIdByLogin("someLogin"); 

Но это не сработает.

Если просто позвонить:

CALL getUserIdByLogin("someLogin"); 

Тогда я хотел бы видеть результаты, но мне нужно, чтобы объявить результаты в переменной (типа массива).

Как я могу это сделать?

Спасибо!

ответ

4
CREATE DEFINER=`root`@`localhost` PROCEDURE `getUserIdByLogin`(
    userId VARCHAR(255), 
    OUT idout int 
) 
BEGIN 
    SELECT id INTO idout FROM `userdata` WHERE login = userId; 
END 

затем

SET @id = 0; 
CALL getUserIdByLogin("someLogin", @id); 
SELECT @id; 
+2

у вас есть, что запятая в вашем втором блоке, но не второй аргумент. было это намеренно? Я не очень часто касаюсь этой области mysql –

+0

@RussellUhl: спасибо, исправлено это – gbn