MySQL存储过程报错: Incorrect number of arguments for PROCEDURE DB.pro_one; expected 1, got 0

MySQL存储过程报错: Incorrect number of arguments for PROCEDURE DB.pro_one; expected 1, got 0

一、问题描述
1、在执行mysql存储过程: call pro_one(); 时,报错: [Err] 1318 - Incorrect number of arguments for PROCEDURE DB.pro_one; expected 1, got 0
2、大意: 参数不正确。
3、执行存储过程代码: call pro_one();

二、存储过程大概代码
CREATE PROCEDURE pro_one(out time VARCHAR(20))
BEGIN
	SELECT now() into time;
end;



三、问题分析及解决
1、由报错信息大意可知,存储过程的参数不正确。
2、看存储过程代码,有一个out 输出参数,而调用存储过程的时候,并没有带参数,所以导致报错。
3、解决: 确定了问题是 缺少参数引起的,那么调用的时候,带上对应参数即可。
4、示例:
call pro_one(@dates);
SELECT @dates;

四、总结
1、对于刚接手的项目,不清楚存储过程的参数情况,可以有以下办法解决:
a、 使用数据库可视化工具,如Navicat : 打开数据库 --- 函数 --- 双击打开 --- 即可看到参数情况。



b、 使用命令: show CREATE PROCEDURE 存储过程名称; -- 通过查看存储过程创建源码的形式,来确定存储过程的参数情况。

c、 查看 information_schema.Routines biao 表来查看存储过程信息。
SELECT * from information_schema.ROUTINES [ where SPECIFIC_NAME='pro_one'];

2、 关于MySQL存储过程,入门使用,请参考这篇文章: https://blog.csdn.net/HaHa_Sir/article/details/79728854



若您有更好的解决办法,或未解决的问题,欢迎留言告知,谢谢。



猜你喜欢

转载自blog.csdn.net/haha_sir/article/details/79753448