

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des procédures Babelfish pour Aurora PostgreSQL
<a name="Appendix.Babelfish.Functions"></a>

## Présentation
<a name="Appendix.Babelfish.Functions.Overview"></a>

Vous pouvez utiliser la procédure suivante pour les instances de base de données Amazon RDS exécutant Babelfish pour Aurora PostgreSQL afin d’améliorer les performances des requêtes :
+ [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é des fonctions PostgreSQL aide l'optimiseur à mieux exécuter les requêtes, ce qui, lorsqu'il est utilisé dans des parties de certaines clauses, a un impact significatif sur les performances des requêtes. 

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

 

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

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

 *function\$1name (facultatif)*   
Vous pouvez spécifier la valeur de cet argument avec un nom en deux parties comme `schema_name.function_name` ou uniquement `function_name`. Si vous spécifiez uniquement `function_name`, le nom du schéma est le schéma par défaut pour l'utilisateur actuel.

 *volatility (facultatif)*   
Les valeurs PostgreSQL valides de volatilité sont `stable`, `volatile` ou `immutable`. Pour plus d’informations, consultez [https://www.postgresql.org/docs/current/xfunc-volatility.html](https://www.postgresql.org/docs/current/xfunc-volatility.html).

**Note**  
Quand `sp_babelfish_volatility` est appelée avec `function_name` qui possède plusieurs définitions, elle génère une erreur.

## Jeu de résultats
<a name="sp_babelfish_volatility-return-type"></a>

Si les paramètres ne sont pas mentionnés, le jeu de résultats s'affiche sous les colonnes suivantes :`schemaname`, `functionname`, `volatility`.

## Notes d’utilisation
<a name="sp_babelfish_volatility-usage-notes"></a>

La volatilité des fonctions PostgreSQL aide l'optimiseur à mieux exécuter les requêtes, ce qui, lorsqu'il est utilisé dans des parties de certaines clauses, a un impact significatif sur les performances des requêtes. 

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

Les exemples suivants montrent comment créer des fonctions simples et expliquent ensuite comment utiliser `sp_babelfish_volatility` sur ces fonctions à l'aide de différentes méthodes.

```
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'exemple suivant montre la volatilité des fonctions :

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

L'exemple suivant montre comment modifier la volatilité des fonctions :

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

Lorsque vous spécifiez uniquement function\$1name, cela affiche le nom du schéma, le nom de la fonction et la volatilité de cette fonction. L'exemple suivant affiche la volatilité des fonctions après la modification des valeurs :

```
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
```

Lorsque vous ne spécifiez aucun argument, cela affiche la liste des fonctions (nom du schéma, nom de la fonction, volatilité des fonctions) présentes dans la base de données actuelle :

```
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>

Vous pouvez exécuter des instructions PostgreSQL du point de terminaison T-SQL. Cela simplifie vos applications, car vous n'avez pas besoin de quitter le port T-SQL pour exécuter ces instructions. 

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

 

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

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

 *instruction [@stmt]*   
L'argument est de type varchar. Cet argument accepte les instructions en langage PG.

**Note**  
Vous ne pouvez passer qu'une seule instruction en langage PG comme argument, sinon l'erreur suivante se produira.

```
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
```

## Notes d’utilisation
<a name="sp_execute_postgresql-statements"></a>

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

Crée et charge une nouvelle extension dans la base de données actuelle. 

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

L'exemple suivant montre comment créer une extension :

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

Utilisez la commande suivante pour accéder aux objets de l'extension :

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

**Note**  
 Si le nom du schéma n'est pas fourni explicitement lors de la création de l'extension, les extensions sont installées par défaut dans le schéma public. Vous devez fournir le qualificateur de schéma pour accéder aux objets de l'extension, comme mentionné ci-dessous :

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

**Extensions prises en charge**

Les extensions suivantes disponibles avec Aurora PostgreSQL sont compatibles avec Babelfish.
+ `pg_stat_statements`
+ `tds_fdw`
+ `fuzzystrmatch`

**Limites**
+ Les utilisateurs doivent posséder le rôle sysadmin sur T-SQL et rds\$1superuser sur postgres pour installer les extensions.
+ Les extensions ne peuvent pas être installées dans des schémas créés par l'utilisateur, ni dans des schémas dbo et guest pour les bases de données master, tempdb et msdb. 
+ L'option CASCADE n'est pas prise en charge.

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

Vous pouvez effectuer une mise à niveau vers une nouvelle version de l'extension à l'aide de l'instruction ALTER. 

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

**Limites**
+ Vous pouvez mettre à niveau la version de votre extension uniquement à l'aide de l'instruction ALTER Extension. Les autres opérations ne sont pas prises en charge.

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

Supprime l'extension spécifiée. Vous pouvez également utiliser les options `if exists` ou `restrict` pour supprimer l'extension. 

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

**Limites**
+ L'option CASCADE n'est pas prise en charge.