

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

É possível executar instruções PostgreSQL do endpoint T-SQL. Isso simplifica suas aplicações, pois você não precisa sair da porta T-SQL para executar essas instruções. 

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

 

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

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

 *declaração [ @stmt ]*   
O argumento é um datatype varchar. Esse argumento aceita declarações do dialeto PG.

**nota**  
Você só pode passar uma declaração do dialeto PG como argumento; caso contrário, ela gerará o seguinte erro.

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

## Observações de uso
<a name="sp_execute_postgresql-statements"></a>

### CRIAR EXTENSÃO
<a name="sp_execute_postgresql-statements-create"></a>

Cria e carrega uma nova extensão no banco de dados atual. 

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

O exemplo a seguir mostra como criar uma extensão:

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

Use o comando a seguir para acessar objetos de extensão:

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

**nota**  
 Se o nome do esquema não for fornecido explicitamente durante a criação da extensão, por padrão, as extensões serão instaladas no esquema público. Você deve fornecer o qualificador de esquema para acessar os objetos de extensão, conforme mencionado abaixo:

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

**Extensões compatíveis**

As seguintes extensões disponíveis com o Aurora PostgreSQL funcionam com o Babelfish.
+ `pg_stat_statements`
+ `tds_fdw`
+ `fuzzystrmatch`

**Limitações**
+ Os usuários precisam ter a função sysadmin no T-SQL e rds\$1superuser no postgres para instalar as extensões.
+ As extensões não podem ser instaladas em esquemas criados pelo usuário e também em esquemas dbo e guest para bancos de dados master, tempdb e msdb. 
+ Não há compatibilidade para a opção CASCADE.

## ALTERAR EXTENSÃO
<a name="sp_execute_postgresql-alter"></a>

Você pode fazer a atualização para uma nova versão de extensão usando a extensão ALTER. 

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

**Limitações**
+ Só é possível fazer a atualização da versão da extensão usando a instrução ALTER Extension. Não há compatibilidade para outras operações.

## EXTENSÃO DROP
<a name="sp_execute_postgresql-drop"></a>

Elimina a extensão especificada. Você também pode usar as opções `if exists` ou `restrict` para remover a extensão. 

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

**Limitações**
+ Não há compatibilidade para a opção CASCADE.