

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 标量 SQL UDF
<a name="udf-creating-a-scalar-sql-udf"></a>

标量 SQL UDF 纳入了一个 SQL SELECT 子句，该子句在此函数被调用并返回单个值时执行。[CREATE FUNCTION](r_CREATE_FUNCTION.md) 命令定义以下参数：
+ （可选）输入参数。每个参数均必须具有一个数据类型。
+ 一个返回数据类型。
+ 一个 SQL SELECT 子句。在该 SELECT 子句中，使用 \$11、\$12 等按照参数在函数定义中的顺序引用输入参数。

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

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

SELECT 子句不能包含以下任何类型的子句：
+ FROM
+ INTO
+ WHERE
+ GROUP BY
+ ORDER BY
+ LIMIT

# 标量 SQL 函数示例
<a name="udf-scalar-sql-function-example"></a>

以下示例创建一个用于比较两个数并返回较大值的函数。有关更多信息，请参阅 [CREATE FUNCTION](r_CREATE_FUNCTION.md)。

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

以下查询将调用新的 f\$1sql\$1greater 函数以查询 SALES 表，并返回 COMMISSION 或 PRICEPAID 的 20% (两个值中的较大者)。

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