

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

T-SQL エンドポイントから PostgreSQL ステートメントを実行できます。これにより、T-SQL ポートを終了しなくてもこれらのステートメントを実行できるため、アプリケーションがシンプルになります。

## 構文
<a name="sp_execute_postgresql-syntax"></a>

 

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

## 引数
<a name="sp_execute_postgresql-arguments"></a>

 *[@stmt] ステートメント*   
この引数のデータ型は varchar です。この引数は PG ダイアレクトステートメントを受け付けます。

**注記**  
引数として渡せる PG ダイアレクトステートメントは 1 つだけです。それ以外の場合は次のエラーが発生します。

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

## 使用に関する注意事項
<a name="sp_execute_postgresql-statements"></a>

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

新しい拡張機能作成して現在のデータベースに読み込みます。

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

次の例は拡張機能の使用方法を示しています。

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

次のコマンドを使用して、拡張機能オブジェクトにアクセスします。

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

**注記**  
 拡張機能の作成時にスキーマ名を明示的に指定しない場合、エクステンションはデフォルトでパブリックスキーマにインストールされます。拡張機能オブジェクトにアクセスするには、以下のようにスキーマ修飾子を指定する必要があります。

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

**サポートされている拡張機能**

Aurora PostgreSQL で利用できる以下の拡張機能は、Babelfish で動作します。
+ `pg_stat_statements`
+ `tds_fdw`
+ `fuzzystrmatch`

**制約事項**
+ 拡張機能をインストールするには、ユーザーが T-SQL では sysadmin ロールを、postgres では rds\$1superuser ロールを持っている必要があります。
+ 拡張機能は、ユーザーが作成したスキーマにはインストールできません。また、master、tempdb、msdb データベースの dbo スキーマやゲストスキーマにもインストールできません。
+ CASCADE オプションはサポートされていません。

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

ALTER 拡張機能を使用して新しい拡張機能のバージョンにアップグレードできます。

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

**制約事項**
+ 拡張機能のバージョンは ALTER Extension 拡張機能を使用してのみアップグレードできます。他のオペレーションはサポートされていません。

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

指定した拡張機能を削除します。`if exists` または `restrict` オプションを使用して拡張機能を削除することもできます。

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

**制約事項**
+ CASCADE オプションはサポートされていません。