我有下一个存储过程:

DELIMITER $$

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

我想声明一个新的变量@tmp,例如,并对此执行smth:
SET @tmpValue = CALL getUserIdByLogin("someLogin");

但没用。
如果只是打电话:
CALL getUserIdByLogin("someLogin");

然后我会看到结果,但我需要在变量(数组类型)中声明结果。
我该怎么做?
谢谢!

最佳答案

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;

关于mysql - 如何从MySQL存储过程获取并分配返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17364842/

10-11 06:09