Usando suporte a instruções preparadas - Amazon Redshift

Usando suporte a instruções preparadas

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.

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.