如何使用OUT参数

时间:2017-11-13 08:23:43

标签: mysql syntax parameters

据我所知,MySQL does not support函数包含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

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

如何管理此问题?

1 个答案:

答案 0 :(得分:1)

函数应该只返回一个值,这里可能有错误的方法。我们不知道你究竟想做什么,所以我们无法判断我们是否在这里处理XY problem。您的整体问题可能有更好的解决方案。

您可以使用user-defined variables解决此问题。这些是会话绑定的,因此请确保在您的函数中重置它们。