mysql - 创建 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”窗口中生成存储过程)。这是否意味着存储过程的创建实际上是成功的,还是我所做的有问题?
解决方案
看起来您的程序已创建。但是,LIMIT 20
查询中的 没有意义。您正在返回只能保存一个值ObjectID
的参数中的选定项。OUT
然而,您将查询限制为 20 行。
如果要返回最多 20 行,请将行作为结果集返回(省略 out 参数和INTO objid
),或将行限制为仅一行。
推荐阅读
- r - 如何向上移动数据并摆脱 NA?
- reactjs - 切换选项卡时反应查询突变isLoading变为false
- python - 使用自定义 __getitem__ 方法的参数解包永远不会终止
- dictionary - 列出公会中的所有成员 (djs v12)
- content-security-policy - 基于登录状态和浏览器的不同 CSP?
- java - 无法使用 Android 应用通过 API 下载数据
- google-chrome - 如何从扩展的后台脚本在 websocket 连接中发送 cookie?
- html - 为什么我的 CSS Grid 行没有跨越整个行宽?为什么我的网格行设置不正确?
- flutter - Flutter 在用户 onTap 上改变标记的颜色
- java - 内存位置如何在链表中自我清理?