

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à.

# Utilizzo delle procedure di Babelfish per Aurora PostgreSQL
<a name="Appendix.Babelfish.Functions"></a>

## Panoramica
<a name="Appendix.Babelfish.Functions.Overview"></a>

Puoi utilizzare la seguente procedura per le istanze database Amazon RDS che eseguono Babelfish per Aurora PostgreSQL per migliorare le prestazioni delle query:
+ [sp\$1babelfish\$1volatility](sp_babelfish_volatility.md)
+ [sp\$1execute\$1postgresql](sp_execute_postgresql.md)

# sp\$1babelfish\$1volatility
<a name="sp_babelfish_volatility"></a>

La volatilità delle funzioni PostgreSQL aiuta il sistema di ottimizzazione a migliorare l'esecuzione delle query, che, se utilizzata in alcune parti di determinate clausole, ha un impatto significativo sulle prestazioni delle query. 

## Sintassi
<a name="sp_babelfish_volatility-syntax"></a>

 

```
sp_babelfish_volatility ‘function_name’, ‘volatility’
```

## Argomenti
<a name="sp_babelfish_volatility-arguments"></a>

 *function\$1name (opzionale)*   
Puoi specificare il valore di questo argomento con un nome composto da due parti come `schema_name.function_name` o solo `function_name`. Se si specifica solo `function_name`, il nome dello schema è lo schema predefinito per l'utente corrente.

 *volatility (opzionale)*   
I valori PostgreSQL validi per la volatilità sono`stable`, `volatile` o `immutable`. Per ulteriori informazioni, consulta [https://www.postgresql.org/docs/current/xfunc-volatility.html](https://www.postgresql.org/docs/current/xfunc-volatility.html)

**Nota**  
Quando `sp_babelfish_volatility` viene chiamato con `function_name` che ha più definizioni, verrà generato un errore.

## Set di risultati
<a name="sp_babelfish_volatility-return-type"></a>

Se i parametri non sono menzionati, il set di risultati viene visualizzato nelle seguenti colonne: `schemaname`, `functionname`, `volatility`.

## Note per l'utilizzo
<a name="sp_babelfish_volatility-usage-notes"></a>

La volatilità delle funzioni PostgreSQL aiuta il sistema di ottimizzazione a migliorare l'esecuzione delle query, che, se utilizzata in alcune parti di determinate clausole, ha un impatto significativo sulle prestazioni delle query. 

## Esempi
<a name="sp_babelfish_volatility-examples"></a>

Gli esempi seguenti mostrano come creare funzioni semplici e in seguito spiegano come utilizzare `sp_babelfish_volatility` con metodi diversi.

```
1> create function f1() returns int as begin return 0 end
2> go
```

```
1> create schema test_schema
2> go
```

```
1> create function test_schema.f1() returns int as begin return 0 end
2> go
```

L'esempio seguente mostra la volatilità delle funzioni:

```
1> exec sp_babelfish_volatility
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           volatile
test_schema f1           volatile
```

L'esempio seguente mostra come modificare la volatilità delle funzioni:

```
1> exec sp_babelfish_volatility 'f1','stable'
2> go
1> exec sp_babelfish_volatility 'test_schema.f1','immutable'
2> go
```

Quando si specifica solo function\$1name, vengono visualizzati il nome dello schema, il nome della funzione e la volatilità di tale funzione. L'esempio seguente mostra la volatilità delle funzioni dopo la modifica dei valori:

```
1> exec sp_babelfish_volatility 'test_schema.f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
test_schema f1           immutable
```

```
1> exec sp_babelfish_volatility 'f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
```

Quando non specifichi alcun argomento, viene visualizzato un elenco di funzioni (nome dello schema, nome della funzione, volatilità delle funzioni) presenti nel database corrente:

```
1> exec sp_babelfish_volatility 
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
test_schema f1           immutable
```

# sp\$1execute\$1postgresql
<a name="sp_execute_postgresql"></a>

Permette di eseguire istruzioni PostgreSQL dall'endpoint T-SQL. In questo modo, non devi uscire dalla porta T-SQL per eseguire queste istruzioni, il che semplifica le tue applicazioni. 

## Sintassi
<a name="sp_execute_postgresql-syntax"></a>

 

```
sp_execute_postgresql [ @stmt = ] statement
```

## Argomenti
<a name="sp_execute_postgresql-arguments"></a>

 *Istruzione [ @stmt ]*   
Il tipo di dati dell'argomento è varchar. Questo argomento accetta istruzioni in dialetto PG.

**Nota**  
È possibile passare come argomento solo un'istruzione in dialetto PG, in caso contrario viene generato l'errore seguente.

```
1>exec sp_execute_postgresql 'create extension pg_stat_statements; drop extension pg_stat_statements'
2>go
```

```
Msg 33557097, Level 16, State 1, Server BABELFISH, Line 1
expected 1 statement but got 2 statements after parsing
```

## Note per l'utilizzo
<a name="sp_execute_postgresql-statements"></a>

### CREATE EXTENSION
<a name="sp_execute_postgresql-statements-create"></a>

Crea e carica una nuova estensione nel database attuale. 

```
1>EXEC sp_execute_postgresql 'create extension [ IF NOT EXISTS ] <extension name> [ WITH ] [SCHEMA schema_name] [VERSION version]';
2>go
```

Il seguente esempio illustra come creare un'estensione:

```
1>EXEC sp_execute_postgresql 'create extension pg_stat_statements with schema sys version "1.10"';
2>go
```

Per concedere l'accesso alla funzione Lambda, utilizza il seguente comando:

```
1>select * from pg_stat_statements;
2>go
```

**Nota**  
 Se il nome dello schema non viene fornito esplicitamente durante la creazione dell'estensione, per impostazione predefinita le estensioni vengono installate nello schema public. È necessario fornire il qualificatore dello schema per accedere agli oggetti di estensione come indicato di seguito:

```
1>select * from [public].pg_stat_statements;
2>go
```

**Estensioni supportate**

Le seguenti estensioni disponibili con Aurora PostgreSQL funzionano con Babelfish.
+ `pg_stat_statements`
+ `tds_fdw`
+ `fuzzystrmatch`

**Limitazioni**
+ Per poter installare le estensioni, gli utenti devono avere il ruolo sysadmin su T-SQL e rds\$1superuser su postgres.
+ Non è possibile installare estensioni in schemi creati dall'utente e nemmeno negli schemi dbo e guest per i database master, tempdb e msdb. 
+ L'opzione CASCADE non è supportata.

## ALTER EXTENSION
<a name="sp_execute_postgresql-alter"></a>

È possibile eseguire l'aggiornamento a una nuova versione dell'estensione utilizzando l'istruzione ALTER extension. 

```
1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>';
2>go
```

**Limitazioni**
+ È possibile aggiornare la versione dell'estensione solo utilizzando l'istruzione ALTER Extension. Altre operazioni non sono supportate.

## DROP EXTENSION
<a name="sp_execute_postgresql-drop"></a>

Rimuove l'estensione specificata. Per rimuovere l'estensione, è anche possibile usare le nostre opzioni `if exists` o `restrict`. 

```
1>EXEC sp_execute_postgresql 'drop extension <extension name>';
2>go
```

**Limitazioni**
+ L'opzione CASCADE non è supportata.