【问题标题】:How to get a single row in Mysql stored procedure with select如何使用select在Mysql存储过程中获取单行
【发布时间】:2017-03-17 11:35:03
【问题描述】:

我一直在四处寻找,但找不到这个问题的答案。它可能非常简单,也可能是一个错误,所以任何帮助指出我做错了什么,提前感谢。

我有一个 id 唯一的表:

Table school
---------------------------
id  name     class   fitness
---------------------------
1    Joe      4      healthy
2    Alice    7       good
3    Bob      10     excellent

存储过程是:

CREATE PROCEDURE checkid(IN ID INT)
BEGIN
    SELECT * FROM school WHERE id = ID;
END

使用以下命令执行上述过程:

CALL checkid(2)

返回整个表格。如果我将 SELECT 语句更改为:

CREATE PROCEDURE checkid(IN ID INT)
BEGIN
     SELECT * FROM school WHERE id = ID LIMIT 1;
END

我得到表的第一行作为这样的返回值,这是错误的。


id  name     class   fitness
---------------------------
1    Joe      4      healthy

我该如何解决这个问题?

【问题讨论】:

  • 我在rextester 上尝试过,您的代码按预期工作...
  • 我用我的数据库试过了——你的代码很好。尝试从头开始再次创建您的过程。
  • 谢谢大家,不幸的是它对我不起作用。也许,我应该在另一台电脑上试试,因为你说它对你有用。
  • 我再次测试,但我总是得到第一行。当你使用 proc 时,你得到的是正确的行还是第一行?

标签: mysql select return row procedure


【解决方案1】:

我认为您的数据库架构或过程名称有问题,或者您的查询或存储过程未正确保存。

尝试通过在工作台中设置默认架构来创建程序,然后运行它。 但我确实认为这根本不可能。

【讨论】:

  • 感谢您的回复。我实际上正在使用工作台,在那里创建程序后,我在工作台和 cmd 窗口上运行了 proc,结果如上。更新语句工作正常,但不能选择。我有点疑惑……
  • 任何人都可以帮助解决这个问题,正如我所说的,它可能看起来很简单,但我被这个问题困住了。我看不出这里有什么问题。
【解决方案2】:

感谢大家的帮助。在尝试了许多不同的事情并通过网络进一步搜索之后。我发现此链接有助于解决问题。

How to get a row by ID in a MySQL Stored Procedure?

当我将输入参数名称更改为其他名称时,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2017-07-18
    • 2018-12-07
    • 2017-02-14
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多