【问题标题】:Creating MySQL Stored Procedure创建 MySQL 存储过程
【发布时间】:2021-07-10 16:15:26
【问题描述】:

我正在使用 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 appears under 'Procedures')。我可以在另一个窗口 (resulting stored procedure in 'Alter' window) 中查看和更改这个创建的存储过程。这是否意味着存储过程的创建实际上是成功的,还是我所做的有什么问题?

【问题讨论】:

  • 注意:代码本身和错误信息中的引用不同。
  • @Akina 感谢您的回复。我注意到了,你知道为什么会有不同吗?我尝试创建其他一些存储过程,但没有出现这样的错误。忽略第一个错误是否安全?

标签: mysql stored-procedures aqua-data-studio


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 2017-10-14
    • 2015-08-27
    • 1970-01-01
    • 2015-09-10
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多