MySQL 存储过程 OUT 参数返回为 null(未声明本地变量)

标签 mysql stored-procedures null return-value

我正在尝试调试这个问题。我已经走极端了,只是想弄清楚为什么即使返回变量被显式设置为某个值,MySQL 也会返回 null。

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`(
    OUT numberExpectedToFill int(11))
    DETERMINISTIC
BEGIN

    set numberExpectedToFill := 23;
    commit;
 END

因此,我编写了一个小脚本来调用它,并且返回值为 NULL。为什么?

prepare s from 'call `test_schema`.`foo`(@output)';
execute s;
select @output

最佳答案

这是最出乎意料的......因为这在 sqlfiddle 中无论使用还是不使用准备好的语句都有效:http://sqlfiddle.com/#!2/d4ddf/1 , http://sqlfiddle.com/#!2/d4ddf/2

也许权限有问题(可能会发出错误信号,我想)?!?

编辑:仍然在猜测 - 您确定从正确的模式调用 foo 吗? O_o

关于MySQL 存储过程 OUT 参数返回为 null(未声明本地变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111981/

相关文章:

mysql - 不从 MySql 存储过程中检索正确的十六进制值

java - 处理空到字符串错误

python - 检查字段是否允许 Django 中的空值

php - 如何将数据分组为从周一到周日开始的周

mysql - Xampp 1.8.3-4 服务器的 FTP 和 MySQL 问题

PHP - 在数组中返回数组的值

java - 使用哪一个(executeUpate 或 list)来插入、更新和选择?

sql - SQL 中的汇总行

hibernate - Hibernate/HQL/JPQL:当……然后NULL否则……END(ClassCastException)时,情况如何?

mysql - Mysql大表中如何将数据从一个表移动到另一个表