

 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/). 

# Limitações dos procedimentos armazenados
<a name="stored-procedure-constraints"></a>

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 name="stored-procedure-differences"></a>

 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
<a name="stored-procedure-limits"></a>

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](declare.md#declare-constraints). 
+ 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](stored-procedure-result-set.md).