

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 存储过程限制
<a name="stored-procedure-constraints"></a>

本主题介绍 Amazon Redshift 存储过程的限制。

以下注意事项在您使用 Amazon Redshift 存储过程时适用。

## Amazon Redshift 与 PostgreSQL 的存储过程支持区别
<a name="stored-procedure-differences"></a>

 Amazon Redshift 与 PostgreSQL 中的存储过程支持之间存在下列区别：
+ Amazon Redshift 不支持子事务，因此对异常处理数据块的支持有限。

## 注意事项和限制
<a name="stored-procedure-limits"></a>

以下是 Amazon Redshift 中存储过程的注意事项：
+ 数据库的最大存储过程数为 10000 个。
+ 过程的源代码最大大小为 2 MB。
+ 在一个用户会话中，您可以并发打开的显式和隐式游标的最大数量为 1。对 SQL 语句结果集进行迭代的 FOR 循环打开隐式游标。不支持嵌套游标。
+ 显式和隐式游标在结果集大小上与标准 Amazon Redshift 游标具有相同的限制。有关更多信息，请参阅 [游标约束](declare.md#declare-constraints)。
+ 嵌套调用的最大层数为 16。
+ 对于输入参数，过程参数的最大数量为 16，对于输出参数为 32。
+ 存储过程中变量的最大数量为 1024。
+ 在存储过程内部，不支持任何需要自己的事务上下文的 SQL 命令。示例包括：
  + PREPARE
  + CREATE/DROP DATABASE
  + CREATE EXTERNAL TABLE
  + VACUUM
  + SET LOCAL
  + ALTER TABLE APPEND
+ 对于 `registerOutParameter` 数据类型，不支持通过 Java Database Connectivity (JDBC) 驱动程序调用 `refcursor` 方法。有关使用 `refcursor` 数据类型的示例，请参阅。[从存储过程中返回结果集](stored-procedure-result-set.md)