首页 > 解决方案 > 创建 MySQL 存储过程

问题描述

我正在使用 Aqua Data Studio 20.6 创建 MySQL 存储过程。以下是我的程序,我将其命名为sp_GetObjIDByProType

( IN prono char(15), IN imgtype char(8), OUT objid bigint )
BEGIN
    SELECT ObjectID INTO objid FROM images WHERE ProNumber = prono AND DocType = imgtype LIMIT 20;
END

当我尝试创建存储过程时,我收到以下错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN imgtype char(8) )
( OUT objid bigint )
BEGIN
    SELECT ObjectID INTO objid F' at line 3

但是,似乎创建任务实际上是成功的(sp_GetObjIDByProType 出现在 'Procedures' 下)。我可以在另一个窗口中查看和更改这个创建的存储过程(在“Alter”窗口中生成存储过程)。这是否意味着存储过程的创建实际上是成功的,还是我所做的有问题?

标签: mysqlstored-proceduresaqua-data-studio

解决方案


看起来您的程序已创建。但是,LIMIT 20查询中的 没有意义。您正在返回只能保存一个值ObjectID的参数中的选定项。OUT然而,您将查询限制为 20 行。

如果要返回最多 20 行,请将行作为结果集返回(省略 out 参数和INTO objid),或将行限制为仅一行。


推荐阅读