

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Usando suporte a instruções preparadas
<a name="jdbc20-prepared-statement-support"></a>

O driver JDBC do Amazon Redshift é compatível com instruções preparadas. Você pode usar instruções preparadas para melhorar a performance de consultas parametrizadas que precisam ser executadas várias vezes durante a mesma conexão.

Uma *instrução preparada* é uma instrução SQL que é compilada no lado do servidor, mas não é executada imediatamente. A instrução compilada é armazenada no servidor como um objeto PreparedStatement até que você feche o objeto ou a conexão. Enquanto esse objeto existe, você pode executar a instrução preparada tantas vezes quantas forem necessárias usando diferentes valores de parâmetro, sem ter que compilar a instrução novamente. Essa sobrecarga reduzida permite que o conjunto de consultas seja executado mais rapidamente.

Para obter mais informações sobre instruções preparadas, consulte “Usando instruções preparadas” no [Tutorial básico do JDBC Basics da Oracle](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html).

Você pode preparar uma instrução que contenha várias consultas. Por exemplo, a seguinte instrução preparada contém duas consultas INSERT:

```
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO
MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES
(1, 'abc');");
```

Tenha cuidado para que essas consultas não dependam dos resultados de outras consultas que são especificadas dentro da mesma instrução preparada. Como as consultas não são executadas durante a etapa de preparação, os resultados ainda não foram retornados e não estão disponíveis para outras consultas na mesma instrução preparada.

Por exemplo, a seguinte instrução preparada, que cria uma tabela e, em seguida, insere valores nessa tabela recém-criada, não é permitida:

```
PreparedStatement pstmt = conn.prepareStatement("CREATE
TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable
VALUES (1, 'abc');");
```

Se você tentar preparar essa instrução, o servidor retorna um erro informando que a tabela de destino (MyTable) ainda não existe. A consulta CREATE deve ser executada antes que a consulta INSERT possa ser preparada.