

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# SQL scalare UDFs
<a name="udf-creating-a-scalar-sql-udf"></a>

Una funzione definita dall'utente SQL scalare integra una clausola SQL SELECT che viene eseguita quando la funzione viene chiamata e restituisce un singolo valore. Il comando [CREATE FUNCTION](r_CREATE_FUNCTION.md) definisce i parametri seguenti:
+ Argomenti di input (facoltativi). Ogni argomento deve avere un tipo di dati. 
+ Un tipo di dati restituito.
+ Una clausola SQL SELECT. Nella clausola SELECT fai riferimento agli argomenti di input usando \$11, \$12 e così via, in base all'ordine degli argomenti nella definizione della funzione. 

Il tipo di dati di input e il tipo di dati restituito possono essere qualsiasi tipo di dati di Amazon Redshift standard.

Non includere una clausola FROM nella clausola SELECT. Includi invece la clausola FROM nell'istruzione SQL che chiama la funzione definita dall'utente SQL. 

La clausola SELECT non può includere nessuno dei seguenti tipi di clausole:
+ FROM
+ INTO
+ WHERE
+ GROUP BY
+ ORDER BY
+ LIMIT

# Esempio di funzione SQL scalare
<a name="udf-scalar-sql-function-example"></a>

L'esempio seguente crea una funzione che confronta due numeri e restituisce il valore più grande. Per ulteriori informazioni, consultare [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;
```

La query seguente chiama la nuova funzione f\$1sql\$1greater per eseguire una query sulla tabella SALES e restituire il valore di COMMISSION o il 20% di PRICEPAID, a seconda di quale valore è più grande.

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