MySQL OUT参数返回NULL

MySQL OUT参数返回NULL,mysql,stored-procedures,procedure,Mysql,Stored Procedures,Procedure,我在MySQL中有一个过程,我希望字符串Question_描述作为OUT参数传递。但是,每次执行该过程时,它总是返回NULL。我该如何解决这个问题?我尝试过许多不同的方法,但没有一种有效 DELIMITER $$ CREATE PROCEDURE `QuestionTitle`(IN `QID` INT(11), OUT `Description` VARCHAR(255)) BEGIN select Question.Question_ID, Question.Question_Descrip

我在MySQL中有一个过程,我希望字符串Question_描述作为OUT参数传递。但是,每次执行该过程时,它总是返回NULL。我该如何解决这个问题?我尝试过许多不同的方法,但没有一种有效

DELIMITER $$
CREATE PROCEDURE `QuestionTitle`(IN `QID` INT(11), OUT `Description` VARCHAR(255))
BEGIN
select Question.Question_ID, Question.Question_Description
FROM Question, QuestionAllocator
WHERE Question.Question_ID=QuestionAllocator.QuestionID and Question.Question_ID=QID;
END$$
DELIMITER ;

您需要指定一个值

CREATE PROCEDURE `QuestionTitle`(
    IN in_QID INT(11),
    OUT out_Description VARCHAR(255)
)
BEGIN
    SELECT out_Description := q.Question_Description
    FROM Question q
    WHERE q.Question_ID = in_QID;
END$$
请注意其他变化:

  • 输入参数清楚地显示它们是in或out参数。这有助于避免与列名冲突
  • 只需要一个表,因此将删除另一个表
  • 为输出参数指定了一个值
  • 您需要学习正确、明确、标准的
    联接
    语法,即使此查询不需要联接

您需要分配一个值

CREATE PROCEDURE `QuestionTitle`(
    IN in_QID INT(11),
    OUT out_Description VARCHAR(255)
)
BEGIN
    SELECT out_Description := q.Question_Description
    FROM Question q
    WHERE q.Question_ID = in_QID;
END$$
请注意其他变化:

  • 输入参数清楚地显示它们是in或out参数。这有助于避免与列名冲突
  • 只需要一个表,因此将删除另一个表
  • 为输出参数指定了一个值
  • 您需要学习正确、明确、标准的
    联接
    语法,即使此查询不需要联接

好吧,如果你从未赋值,你期望它是什么?好吧,如果你从未赋值,你期望它是什么?以下命令的目的是什么:=?@afterwaves。这将设置值。您也可以使用
进入
。谢谢,对SQL来说是全新的,所以这很有帮助。以下命令的目的是什么:=?@afterwaves。这将设置值。您也可以在中使用
。谢谢,这对SQL来说是全新的,所以这很有帮助。