据我所知,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
我发明的唯一出路是声明另一个函数并单独调用它,但它似乎不是最佳的,因为第二个函数将从表中获取和处理相同的数据。
如何管理此问题?
答案 0 :(得分:1)
函数应该只返回一个值,这里可能有错误的方法。我们不知道你究竟想做什么,所以我们无法判断我们是否在这里处理XY problem。您的整体问题可能有更好的解决方案。
您可以使用user-defined variables解决此问题。这些是会话绑定的,因此请确保在您的函数中重置它们。