gpt4 book ai didi

mysql - 在mysql中调用一个存储函数,但是得到错误:Subquery returns more than 1 row

转载 作者:行者123 更新时间:2023-11-29 05:11:17 26 4
gpt4 key购买 nike

在 mysql 数据库中,我有一个名为“usertest”的表,其中存储了一些用户信息。我成功地创建了一个名为“getId”的 UDF。这是它的创建方式:

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name);
return id_found;
end

应该没问题,但是,当我调用

select getId('mike');

mysql引擎报错:

Subquery returns more than 1 row.

但是在表 usertest 中我只有一行 Name='mike'。那是有线的。有人可以告诉我为什么吗?提前谢谢你:)

最佳答案

列名和变量不区分大小写,所以 Namename 是一回事。它不是将 Name 列与 name 变量进行比较,而是将 name 变量与其自身进行比较,因此它始终为真。

为函数参数使用不同的名称。

create function getId(name_param varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name_param);
return id_found;
end

或使用表名前缀。

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where usertest.Name=name);
return id_found;
end

参见 MySQL : When stored procedure parameter name is the same as table column name

关于mysql - 在mysql中调用一个存储函数,但是得到错误:Subquery returns more than 1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com