如何使用 select 在 Mysql 存储过程中获取单行
How to get a single row in Mysql stored procedure with select
这个问题我找了好久都没有找到答案。它可能非常简单,也可能是一个错误,所以任何帮助指出我做错了什么,提前表示感谢。
我有一个 table,其中 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)
return 整个 table。如果我将 SELECT 语句更改为:
CREATE PROCEDURE checkid(IN ID INT)
BEGIN
SELECT * FROM school WHERE id = ID LIMIT 1;
END
我将 table 的第一行作为 return 值,这是错误的。
id name class fitness
---------------------------
1 Joe 4 healthy
我该如何解决这个问题?
我认为您的数据库模式或过程名称有问题,或者您的查询或存储过程未正确保存。
尝试通过在 workbench 中设置默认架构然后在 运行 中创建您的过程。
但我确实认为这根本不可能。
感谢大家的帮助。在尝试了许多不同的事情并通过网络进一步搜索之后。我发现这个 link 有助于解决问题。
当我将输入参数名称更改为其他名称时,它起作用了。
这个问题我找了好久都没有找到答案。它可能非常简单,也可能是一个错误,所以任何帮助指出我做错了什么,提前表示感谢。
我有一个 table,其中 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)
return 整个 table。如果我将 SELECT 语句更改为:
CREATE PROCEDURE checkid(IN ID INT)
BEGIN
SELECT * FROM school WHERE id = ID LIMIT 1;
END
我将 table 的第一行作为 return 值,这是错误的。
id name class fitness
---------------------------
1 Joe 4 healthy
我该如何解决这个问题?
我认为您的数据库模式或过程名称有问题,或者您的查询或存储过程未正确保存。
尝试通过在 workbench 中设置默认架构然后在 运行 中创建您的过程。 但我确实认为这根本不可能。
感谢大家的帮助。在尝试了许多不同的事情并通过网络进一步搜索之后。我发现这个 link 有助于解决问题。
当我将输入参数名称更改为其他名称时,它起作用了。