建立純量 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 或 20% 的 PRICEPAID,以較大者為準。

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