如何从MySQL存储过程中获取并分配返回值

2 mysql variables stored-procedures call declare

我有下一个存储过程:

DELIMITER $$

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

我想@tmp为eg 声明一个新变量,并为此做一个smth:

SET @tmpValue = CALL getUserIdByLogin("someLogin");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

如果只是打电话:

CALL getUserIdByLogin("someLogin");
Run Code Online (Sandbox Code Playgroud)

然后我会看到结果,但我需要在变量(数组类型)中声明结果.

我该怎么做?

谢谢!

gbn*_*gbn 7

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

然后

SET @id = 0;
CALL getUserIdByLogin("someLogin",  @id);
SELECT @id;
Run Code Online (Sandbox Code Playgroud)

  • 你在第二个区块中有逗号,但没有第二个参数.那是故意的吗?我不经常触及mysql的这个区域 (2认同)