mysql - 从函数返回两个结果

标签 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); 

但是我得到这个错误

我该如何解决?我如何为此执行一项功能?

谢谢

最佳答案

在 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

关于mysql - 从函数返回两个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407622/

相关文章:

mysql - 测试时的 CakePHP 连接

mysql - 主键可以为空吗?如果是,为什么这个改变会导致这个结果?

sql - 如何在 DB2 中查找表的主键的名称和值

mysql - 获取两个日期之间的小时差

java.sql.SQLException : No suitable driver found for jdbc:mysql://localhost:3306/db 异常

mysql - 在 redhat 上安装 datamapper mysql dm-mysql-adapter

Connector/C 的 MySQL 字符编码

php - vtiger webservice 查询中的 "Query failed:Permission to perform the operation is denied for name"我想通过它列出模块记录之一

mysql - 使用 order 子句更新许多记录

sql - 单个 SQL 查询中的多个计数