gpt4 book ai didi

sql - mysql存储函数参数

转载 作者:行者123 更新时间:2023-11-29 03:23:39 25 4
gpt4 key购买 nike

我刚刚开始创建一个存储函数,这是我的第一次,所以我遇到了一些问题。目前我使用 SELECT test(); 调用该函数(test 是现在的函数名称)。我想向函数发送一个数字(用户名 ID)并返回用户名。

我通过使用 SELECT test(1); 来实现这一点 1 是表中用户的 ID。这似乎在返回用户名时有效,但如果我输入任何数字,也会返回相同的用户名。

BEGIN 

DECLARE new_username VARCHAR(90);

SELECT `username` INTO new_username FROM `users` WHERE `ID` = ID;

return new_username;
END

我已将参数设置为 ID int

我认为关键字 INTO 会将用户名的值放入变量 new_username 中是否正确?如果我在没有 INTO 的情况下运行它,我会得到错误:

Not allowed to return a result set from a function

我在这方面是否犯了任何明显的错误,我希望我没有完全做错。感谢您的任何建议:)。

编辑:我刚刚在表中添加了几行,现在出现错误:

Result consisted of more than one row

完整的sql版本:

CREATE DEFINER=`elliotts`@`%` FUNCTION `test`(ID int) 
RETURNS varchar(32) CHARSET latin1
BEGIN

DECLARE new_username VARCHAR(32);

SELECT `username`
INTO new_username
FROM `users`
WHERE `ID` = ID;

return new_username;

END

最佳答案

使用:

DROP FUNCTION IF EXISTS `example`.`test` $$
CREATE FUNCTION `example`.`test` (param INT) RETURNS VARCHAR(32)
BEGIN

DECLARE new_username VARCHAR(32);

SELECT `username`
INTO new_username
FROM `users`
WHERE `ID` = param;

RETURN COALESCE(new_username, 'Username not found');

END $$

请注意,RETURN 值的 VARCHAR 长度与变量匹配,该变量应与您要返回的列长度匹配。

关于sql - mysql存储函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39920418/

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