CREATE FUNCTION...LANGUAGE SQL AS
CREATE FUNCTION...LANGUAGE SQL AS 用于创建 SQL UDF。
语法说明
CREATE FUNCTION...LANGUAGE SQL AS 用于创建 SQL UDF。
SQL 自定义函数是一种用户自己编写的 SQL 函数,可以根据特定需求执行自定义操作。这些函数可以用于查询、数据转换等任务,使得 sQL 代码更加模块化和可维护。
MatrixOne SQL UDF 目前不支持重载,函数名在一个 matrixone 集群要求是唯一的。
语法结构
> CREATE [ OR REPLACE ] FUNCTION <name> (
[ <arg_name> <arg_data_type> ] [ , ... ] )
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
--创建无参 sql 自定义函数
mysql> create table t1(n1 int);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 values(1),(2),(3);
Query OK, 3 rows affected (0.01 sec)
mysql> CREATE FUNCTION t1_fun () RETURNS VARCHAR LANGUAGE SQL AS 'select n1 from t1 limit 1' ;
Query OK, 0 rows affected (0.01 sec)
mysql> select t1_fun();
+----------+
| t1_fun() |
+----------+
| 1 |
+----------+
1 row in set (0.01 sec)
示例 2
--创建 sql 自定义函数返回两个参数的和
mysql> CREATE FUNCTION twoadd (x int, y int) RETURNS int LANGUAGE SQL AS 'select $1 + $2' ;
Query OK, 0 rows affected (0.02 sec)
mysql> select twoadd(1,2);
+--------------+
| twoadd(1, 2) |
+--------------+
| 3 |
+--------------+
1 row in set (0.00 sec)