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

小灰灰 2022-05-28 05:21 351阅读 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();

二、存储过程大概代码

  1. CREATE PROCEDURE pro_one(out time VARCHAR(20))
  2. BEGIN
  3. SELECT now() into time;
  4. end;

三、问题分析及解决

1、由报错信息大意可知,存储过程的参数不正确。

2、看存储过程代码,有一个out 输出参数,而调用存储过程的时候,并没有带参数,所以导致报错。

3、解决: 确定了问题是 缺少参数引起的,那么调用的时候,带上对应参数即可。

4、示例:

  1. call pro_one(@dates);
  2. SELECT @dates;

四、总结

1、对于刚接手的项目,不清楚存储过程的参数情况,可以有以下办法解决:

a、 使用数据库可视化工具,如Navicat : 打开数据库 —- 函数 —- 双击打开 —- 即可看到参数情况。

20180330101256696

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

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

发表评论

表情:
评论列表 (有 0 条评论,351人围观)

还没有评论,来说两句吧...

相关阅读