Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从函数返回两个结果_Mysql_Sql - Fatal编程技术网

Mysql 从函数返回两个结果

Mysql 从函数返回两个结果,mysql,sql,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

我正在尝试创建一个二级函数:

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); 
但是我得到了这个错误

我怎么修理它?我如何为这个做一个函数


谢谢

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

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

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

然后,您可以这样调用函数:

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

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

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

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

然后,您可以这样调用函数:

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

您可能会看到:本质上,MySQL不支持表函数。。但它可以将数据放入您检索的表中。不确定这是否有用。因为这两个函数做不同的事情,所以将它们作为两个函数保留。这样你会有更多的灵活性。你不是在一两个小时前问过同样的关于
raiz1
的问题吗?我记得对它发表了评论,但我现在找不到了--你删除了它并问了同样的问题吗?是的@Barmar,但对我来说出现了一个错误。你可能会看到:本质上,MySQL不支持表函数。。但它可以将数据放入您检索的表中。不确定这是否有用。因为这两个函数做不同的事情,所以将它们作为两个函数保留。这样你会有更多的灵活性。你不是在一两个小时前问过同样的关于
raiz1
的问题吗?我记得对它发表了评论,但我现在找不到它了——你删除了它并问了同样的问题吗?是的@Barmar,但对我来说出现了一个错误。我使用以下方法解决了这个问题:
创建函数raiz(a INT,b INT,c INT,isfirst INT)
返回十进制(10,5)确定性
返回(isfirst=0时的情况(-b-sqrt(幂(b,2)-4*a*c)/2*a)else(-b+sqrt(POWER(b,2)-4*a*c)/2*a)end)但我想返回函数的两个实根。我使用以下方法解决此问题:
创建函数raiz(a INT,b INT,c INT,isfirst INT)
返回十进制(10,5)确定性
返回(isfirst=0时的情况(-b-sqrt(POWER(b,2)-4*a*c)/2*a)else(-b+sqrt(幂(b,2)-4*a*c)/2*a)end)
但是我想返回函数的两个实根。