我有三个表,我希望对每个表的所有结果列求和,并从我定义的函数返回这些值以执行所有过程。是否可以从单个mysql函数返回这三个浮点求和?
答案 0 :(得分:5)
执行此操作的正确方法是使用存储过程:
CREATE PROCEDURE stored_proc(IN arg1 INT, IN arg2 INT, OUT retVal1 FLOAT, OUT retVal2 FLOAT, OUT retVal3 FLOAT)
然后您可以使用
分配变量SELECT x*y INTO retVal1;
...
并使用@variables调用存储过程来访问它们:
CALL stored_proc(1, 2, @retVal1, @retVal2, @retVal3);
答案 1 :(得分:4)
我的脏解决方案是:1。连接字符串中的值。 2返回字符串。 3 Splits将字符串返回值。我认为它不优雅,我确信这有局限性,但它适用于简单的情况
还需要创建分割函数,因为Mysql没有这个函数:
首先编辑你的功能。
select lpad('1',level,'1')
from dual
connect by level <= 5
现在您可以分割返回的值来调用此函数:
CREATE FUNCTION yourFunctionWith2valuesForReturning()
BEGIN
DECLARE var1 VARCHAR(255);
DECLARE var2 VARCHAR(255);
// Your function logic here. Assign values to var1 and var2
RETURN CONCAT_WS('|', var1, var2);
END
获取值
CREATE FUNCTION SPLIT_STR(x VARCHAR(510), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END
注意:
你可以使用字符串作为分隔符,f.e:'| sep |'或者你想要的另一个。
SPLIT_STR函数是http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
的特征关于在mysql中拆分字符串请参阅此问题:Split Varchar into Character in MySQL