命名存储过程 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

命名存储过程

如果您定义的过程具有相同的名称,但输入参数数据类型或签名不同,则将创建新的过程。因此会重载过程名称。有关更多信息,请参阅重载过程名称。Amazon Redshift 不支持根据输出参数重载过程。您不能有两个过程,其名称和输入参数数据类型均相同但输出参数类型不同。

拥有者或超级用户可以将存储过程的正文替换为具有相同签名的新正文。要更改某个存储过程的签名或返回类型,请删除存储过程并重新创建它。有关更多信息,请参阅DROP PROCEDURECREATE PROCEDURE

通过在实施前考虑您存储过程的命名约定,可以避免潜在的冲突和意外结果。由于您可以重载过程名称,它们可能与现有及以后的 Amazon Redshift 过程名称冲突。

重载过程名称

过程由其名称和签名标识,后者是输入参数的数目和参数的数据类型。同一 schema 中的两个函数可具有相同的名称,前提是它们的签名不同。换而言之,您可以重载过程名称。

在您运行过程时,查询引擎将根据您提供的参数数目和参数的数据类型来确定要调用哪个过程。您可以使用重载来模拟具有可变数量(不超过 CREATE PROCEDURE 命令允许的限制)的参数的过程。有关更多信息,请参阅CREATE PROCEDURE

防止命名冲突

我们建议您使用前缀 sp_ 对所有过程进行命名。Amazon Redshift 保留 sp_ 前缀,将其专用于存储过程。通过将 sp_ 作为存储过程名称的前缀,您可以确保过程名称不会与任何现有或以后的 Amazon Redshift 过程名称冲突。