从函数返回两个结果

时间:2013-05-06 21:30:59

标签: mysql sql

我正在尝试用以下方法创建一个二度函数:

CREATE FUNCTION delta (a INT, b INT, c INT)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN POWER(b,2) - 4*a*c;

CREATE FUNCTION raiz1 (a INT, b INT, c INT)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN (-b - sqrt(delta)/2*a), (-b + sqrt(delta)/2*a); 

但是我收到了这个错误

我是如何解决的?我如何为此做一个功能?

由于

1 个答案:

答案 0 :(得分:1)

MySQL中返回多个值的唯一方法是使用存储过程。但是,存储过程不能在SQL语句中使用,因此它可能无法执行您想要的操作。

delta的第二个函数中的语法不正确,因为您没有传入任何参数。

可以编写raiz1()函数来获取第四个参数,指定要返回的值。使用原始语法(未正确调用delta):

CREATE FUNCTION raiz1 (a INT, b INT, c INT, isfirst int)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN (case when isfirst = 0 then (-b - sqrt(delta)/2*a) else (-b + sqrt(delta)/2*a) end);

然后您将调用此函数:

select raiz1(1, 2, 3, 0) as Root1, raiz1(1, 2, 3, 1) as Root2