View a markdown version of this page

Limitações dos procedimentos armazenados - Amazon Redshift

O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog publicada em 30 de junho de 2025.

Limitações dos procedimentos armazenados

Este tópico descreve as limitações dos procedimentos armazenados do Amazon Redshift.

As considerações a seguir se aplicam ao usar procedimentos armazenados do Amazon Redshift.

Diferenças entre Amazon Redshift e PostgreSQL para suporte a procedimentos armazenados

A seguir estão as diferenças entre o suporte a procedimentos armazenados no Amazon Redshift e PostgreSQL:

  • O Amazon Redshift não oferece suporte a subtransações e, portanto, tem suporte limitado para blocos de tratamento de exceção.

Considerações e limitações

Veja a seguir as considerações sobre os procedimentos armazenados no Amazon Redshift:

  • O número máximo de procedimentos armazenados para um banco de dados é 10.000.

  • O tamanho máximo do código-fonte para um procedimento é 2 MB.

  • O número máximo de cursores explícitos e implícitos que podem ser abertos simultaneamente em uma sessão do usuário é 1. Loops FOR que iteram sobre o conjunto de resultados de uma instrução SQL abrem cursores implícitos. Não há suporte para cursores aninhados.

  • Os cursores explícitos e implícitos têm as mesmas restrições no tamanho do conjunto de resultados que os cursores padrão do Amazon Redshift. Para obter mais informações, consulte Restrições de cursor.

  • O número máximo de níveis para chamadas aninhadas é 16.

  • O número máximo de parâmetros de procedimento é 32 para argumentos de entrada e 32 para argumentos de saída.

  • O número máximo de variáveis em um procedimento armazenado é 1.024.

  • Qualquer comando SQL que requer seu próprio contexto de transação não é compatível dentro de um procedimento armazenado. Os exemplos incluem:

    • PREPARE

    • CREATE/DROP DATABASE

    • CREATE EXTERNAL TABLE

    • VACUUM

    • SET LOCAL

    • ALTER TABLE APPEND

  • A chamada do método registerOutParameter pelo driver do Java Database Connectivity (JDBC) não é compatível com o tipo de dados refcursor. Para obter um exemplo de uso do tipo de dados refcursor, consulte Exibir um conjunto de resultados de um procedimento armazenado.