sp_execute_postgresql
T-SQL エンドポイントから PostgreSQL ステートメントを実行できます。これにより、T-SQL ポートを終了しなくてもこれらのステートメントを実行できるため、アプリケーションがシンプルになります。
構文
sp_execute_postgresql [ @stmt = ] statement
引数
- [@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
使用に関する注意事項
CREATE EXTENSION
新しい拡張機能作成して現在のデータベースに読み込みます。
1>
EXEC sp_execute_postgresql 'create extension [ IF NOT EXISTS ]<extension name>
[ WITH ] [SCHEMAschema_name
] [VERSIONversion
]';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_superuser ロールを持っている必要があります。
拡張機能は、ユーザーが作成したスキーマにはインストールできません。また、master、tempdb、msdb データベースの dbo スキーマやゲストスキーマにもインストールできません。
CASCADE オプションはサポートされていません。
ALTER EXTENSION
ALTER 拡張機能を使用して新しい拡張機能のバージョンにアップグレードできます。
1>
EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>';2>
go
制約事項
拡張機能のバージョンは ALTER Extension 拡張機能を使用してのみアップグレードできます。他のオペレーションはサポートされていません。
DROP EXTENSION
指定した拡張機能を削除します。if exists
または restrict
オプションを使用して拡張機能を削除することもできます。
1>
EXEC sp_execute_postgresql 'drop extension <extension name>';2>
go
制約事項
CASCADE オプションはサポートされていません。