【问题标题】:MySQL Stored Proc returning NULL values when i call the 2 OUT parameters - see code当我调用 2 个 OUT 参数时,MySQL 存储过程返回 NULL 值 - 请参阅代码
【发布时间】:2013-10-17 11:33:06
【问题描述】:

我正在学习 mysql 认证,我的学习方式是边做边学,我之前因一个问题而失败,如果我更加关注存储过程,我会得到它。任何我都在编造一些我会实际使用的时髦场景,所以这是一个让我很难过的场景。

    /*TABLE STRUCTURE */
    CREATE TABLE `members` (
      `id` mediumint(8) unsigned NOT NULL auto_increment,
      `name` varchar(255) default NULL,
      `email` varchar(255) default NULL,
      PRIMARY KEY (`id`)
    );


    /* PROCEDURE STRUCTURE */
    USE WOL_STATISTICS;

    DELIMITER $$

    CREATE PROCEDURE `select_user`
    (
    IN `idnum` INT(11),
    OUT `name` VARCHAR(255),
    OUT `email` VARCHAR(255)
    )

    SQL SECURITY DEFINER
    LANGUAGE SQL
    NOT DETERMINISTIC


    BEGIN
    SELECT `name`, `email` FROM `members` WHERE `id` = `idnum`;
    END $$

    DELIMITER ;


    /* CALL STATEMENT */

    CALL select_user(20, @name, @email);
        SELECT @name, @email;

我不断返回空值,谁能告诉我为什么?

【问题讨论】:

    标签: mysql sql stored-procedures mysqlimport


    【解决方案1】:

    首先,你确定你的表定义是正确的吗?您似乎必须在表中添加名为 id 的列。

    第二:您正在从表中选择nameemail 列,但您没有将值分配给输出参数nameemail(也许您应该将参数重命名为否则要避免这种混淆,例如outnameoutemail)。这不是自动完成的。明确告诉SELECT 语句选择哪些列并将结果分配给变量之间存在巨大差异。

    因此,虽然存储过程实际上返回了一个结果集,但两个输出参数将始终为 null,除非您为它们赋值。

    【讨论】:

    • 您好,很抱歉,当我创建要测试的表时,我实际上删除了第二个 ID,这是一个错误。我还是迷路了。我已将输出参数重命名为 OUT outname VARCHAR(255), OUT outemail VARCHAR(255) 并且我正在尝试使用以下 CALL select_user(20, '@outname', '@outemail') 获取它们的结果;选择'@outname','@outemail';但仍然为空
    • 就像 Thorsten 说的,给你的变量赋值。做SELECT name, email INTO outname, outemail FROM ...(如果我没记错的话)。
    【解决方案2】:

    改变你的: 选择 name, email FROM members WHERE id = idnum; 至 选择 name, email 到 PARAMETER_NAME, PARAMETER_EMAIL FROM members WHERE id = idnum;

    尝试使用其他参数名称,例如 P_NAME、P_EMAIL 设置如下:

    选择nameemail 进入P_NAME,P_EMAIL FROM members WHERE id = P_IDNUM;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 2012-11-29
      • 2020-01-09
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多