创建标量 SQL UDF - Amazon Redshift

创建标量 SQL UDF

标量 SQL UDF 纳入了一个 SQL SELECT 子句,该子句在此函数被调用并返回单个值时执行。CREATE FUNCTION 命令定义以下参数:

  • (可选)输入参数。每个参数均必须具有一个数据类型。

  • 一个返回数据类型。

  • 一个 SQL SELECT 子句。在该 SELECT 子句中,使用 $1、$2 等按照参数在函数定义中的顺序引用输入参数。

输入和返回数据类型可以是任何标准 Amazon Redshift 数据类型。

请勿在 SELECT 子句中包括 FROM 子句。请改为在调用 SQL UDF 的 SQL 语句中包括 FROM 子句。

SELECT 子句不能包含以下任何类型的子句:

  • FROM

  • INTO

  • WHERE

  • GROUP BY

  • ORDER BY

  • LIMIT

标量 SQL 函数示例

以下示例创建一个用于比较两个数并返回较大值的函数。有关更多信息,请参阅 CREATE FUNCTION

create function f_sql_greater (float, float) returns float stable as $$ select case when $1 > $2 then $1 else $2 end $$ language sql;

以下查询将调用新的 f_sql_greater 函数以查询 SALES 表,并返回 COMMISSION 或 PRICEPAID 的 20% (两个值中的较大者)。

select f_sql_greater(commission, pricepaid*0.20) from sales;