3

使用以下代码:

MySqlParameter curParam = new MySqlParameter("var", MySqlDbType.Int32);
curParam.Direction = System.Data.ParameterDirection.Output;
oCmd.Parameters.Add(curParam);

使用以下存储过程:

CREATE PROCEDURE testProc(OUT var INT)
BEGIN
    SELECT 1, 2, 3;
    SELECT 27 INTO var;
END
$$

从控制台运行它会返回“27”:

CALL testProc(@i);
SELECT @i;

但是在 .NET 中,当执行查询时(当连接仍然打开时),curParam.value 返回 NULL。

否则,存储过程会返回正确的结果。此外,直接在控制台中运行存储过程时,输出参数也会正确返回。

我错过了什么吗?

4

1 回答 1

3

只有在阅读器关闭后才会填充输出参数。与获取参数值时相比,您的代码何时执行阅读器?

于 2013-12-26T19:30:20.880 回答