如何用OUT参数模拟MySQL函数

如何用OUT参数模拟MySQL函数,mysql,syntax,parameters,Mysql,Syntax,Parameters,据我所知,MySQL函数具有OUT(以及IN/INOUT)参数类型。 我正在创建一个函数 DROP FUNCTION IF EXISTS `GETGOSTAUTHRUS`; CREATE DEFINER = `root`@`localhost` FUNCTION `GETGOSTAUTHRUS`(`PublID` int) RETURNS varchar(1024) CHARSET utf8 BEGIN RETURN .....; END; 此函数通过SELECT语句调用: S

据我所知,MySQL函数具有
OUT
(以及
IN
/
INOUT
)参数类型。 我正在创建一个函数

DROP FUNCTION IF EXISTS `GETGOSTAUTHRUS`;

CREATE DEFINER = `root`@`localhost` FUNCTION `GETGOSTAUTHRUS`(`PublID` int)
 RETURNS varchar(1024) CHARSET utf8
BEGIN 

    RETURN .....;
END;
此函数通过
SELECT
语句调用:

SELECT 
GETGOSTAUTHRUS(p.ID) `AuthList`,.......
FROM....
一切正常。但是,我需要扩展函数并返回另一个varchar类型的值,但我不能像在过程声明中那样声明
out prefix varchar(50)
变量:

CREATE procedure `GETGOSTAUTHRUS`(PublID int, OUT prefix varchar(50))

BEGIN
我发明的唯一出路是声明另一个函数并单独调用它,但这似乎不是最优的,因为第二个函数将从表中获取并处理相同的数据


如何处理该问题?

函数应该只返回一个值,您可能使用了错误的方法。我们不知道你到底想做什么,所以我们不知道我们是否在处理一个问题。也许有更好的方法来解决你的整体问题


但是,您可以通过以下方法解决此问题。这些是会话绑定的,因此请确保在函数中重置它们

@colordalnet是的,谢谢。这与我的QThank you中的链接中的文章几乎相同!这不是XY问题,但问题的第二部分很有帮助!我将考虑在