【问题标题】:Why do I receive Null from this stored procedure?为什么我会从此存储过程中收到 Null?
【发布时间】:2020-08-24 03:22:49
【问题描述】:

我创建了一个带有输出参数@name 的存储过程。但是当我调用它时,我收到 Null。怎么正确调用程序还是程序有错误?

CREATE PROCEDURE GetName(IN kartennummer CHAR(16), OUT name VARCHAR(91))
BEGIN
SELECT @name = (SELECT CONCAT_WS(' ', Vorname, Nachname) FROM Kunden kund JOIN Konten kont WHERE kund.KundenID = kont.KundenID AND kont.Kartennummer = kartennummer);
END;

我这样调用程序:

CALL GetNAME("7717015800401117", @name);

为什么我收到 Null 而不是名称?单独的 Select 语句有效。

【问题讨论】:

标签: mysql sql mariadb


【解决方案1】:
DELIMITER $$
CREATE PROCEDURE GetName(IN kartennummer CHAR(16), OUT name VARCHAR(91))
BEGIN
    SELECT 
        CONCAT_WS(' ', Vorname, Nachname)
        INTO 
        name
    FROM
        Kunden kund
            JOIN
        Konten kont
    WHERE
        kund.KundenID = kont.KundenID
            AND kont.Kartennummer = kartennummer;
END;
DELIMITER ;

这只有在选择查询的结果只有一个名称时才有效,但假设你是这种情况

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2020-02-24
    • 2013-12-09
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多