在 SQL 自定义函数中运行 select 语句

Posted

技术标签:

【中文标题】在 SQL 自定义函数中运行 select 语句【英文标题】:Running a select statement within an SQL custom function 【发布时间】:2022-01-19 02:04:24 【问题描述】:

尝试在 SQL 中运行嵌套了 Select 语句的函数,但无法正常工作。对此很陌生,所以我可以使用帮助。这是我的代码:

  DELIMITER//
  CREATE FUNCION whereAndWhen(species, VARCHAR(255))
  RETURNS INT()
  BEGIN
      SELECT animals.zone
      FROM animals
      WHERE animals.species = species;
      RETURN;
   END; //
   DELIMITER ;

该函数的目标是接受一个动物物种名称并接收该动物居住的区域,所有这些都来自同一个表。有什么建议吗?

【问题讨论】:

【参考方案1】:

在返回之前尝试使用 DECLARE 和 SET 来保存 SELECT 查询:

DELIMITER//
    CREATE FUNCION whereAndWhen(species, VARCHAR(255))
    RETURNS INT()
    BEGIN
          DECLARE zoneNum INT;
          SET zoneNum = (SELECT animals.zone
          FROM animals
          WHERE animals.species = species);
    RETURN zoneNum;
    END; //
DELIMITER ;

【讨论】:

【参考方案2】:

您可以使用 SELECT INTO

CREATE tABLE animals (zone int, species varchar(255))
INSERT INTO animals VALUES (1,'Owl')
  CREATE FUNCTION whereAndWhen(_species VARCHAR(255))
  RETURNS INT
  BEGIN
      SELECT animals.zone INTO @zone
      FROM animals
      WHERE animals.species = _species;
      RETURN @zone;
   END;
SELECT whereAndWhen('Owl')
| whereAndWhen('猫头鹰') | | ------------------: | | 1 |

db小提琴here

【讨论】:

以上是关于在 SQL 自定义函数中运行 select 语句的主要内容,如果未能解决你的问题,请参考以下文章

sql server 怎样用select语句调用自定义表值函数

sql server 怎样用select语句调用自定义表值函数

T-SQL编程 —— 用户自定义函数(标量函数)

用T-SQL语句自定义一表值函数

ORACLE当中自定义函数性优化浅析

如何在 Select Sql 语句中使用自定义列