CREATE FUNCTION…LANGUAGE SQL AS

语法说明

CREATE FUNCTION...LANGUAGE SQL AS 用于创建 SQL UDF。

SQL 自定义函数是一种用户自己编写的 SQL 函数,可以根据特定需求执行自定义操作。这些函数可以用于查询、数据转换等任务,使得 sQL 代码更加模块化和可维护。

MatrixOne SQL UDF 目前不支持重载,函数名在一个 matrixone 集群要求是唯一的。

语法结构

  1. > CREATE [ OR REPLACE ] FUNCTION <name> (
  2. [ <arg_name> <arg_data_type> ] [ , ... ] )
  3. RETURNS <result_data_type> LANGUAGE SQL AS 'function_body'

结构说明

  • <name>:指定自定义函数的名称。

  • <arg_name> <arg_data_type>:用于指定自定义函数的参数,这里的参数只有名称和类型。

  • RETURNS <result_data_type>:用于声明自定义函数返回值的数据类型,完整的数据类型请查看数据类型概览

  • function_body:自定义函数的主体部分。用户必须使用$1、$2,…以引用参数,而不是实际的参数名称。函数体支持 select 语句,且返回值唯一,如果 sql 函数体不是表达式,并且是表上的 select 语句,则查询应使用 limit 1 或不带 group by 子句的聚合函数将其结果限制为 1。

示例

示例 1

  1. --创建无参 sql 自定义函数
  2. mysql> create table t1(n1 int);
  3. Query OK, 0 rows affected (0.02 sec)
  4. mysql> insert into t1 values(1),(2),(3);
  5. Query OK, 3 rows affected (0.01 sec)
  6. mysql> CREATE FUNCTION t1_fun () RETURNS VARCHAR LANGUAGE SQL AS 'select n1 from t1 limit 1' ;
  7. Query OK, 0 rows affected (0.01 sec)
  8. mysql> select t1_fun();
  9. +----------+
  10. | t1_fun() |
  11. +----------+
  12. | 1 |
  13. +----------+
  14. 1 row in set (0.01 sec)

示例 2

  1. --创建 sql 自定义函数返回两个参数的和
  2. mysql> CREATE FUNCTION twoadd (x int, y int) RETURNS int LANGUAGE SQL AS 'select $1 + $2' ;
  3. Query OK, 0 rows affected (0.02 sec)
  4. mysql> select twoadd(1,2);
  5. +--------------+
  6. | twoadd(1, 2) |
  7. +--------------+
  8. | 3 |
  9. +--------------+
  10. 1 row in set (0.00 sec)