命名存储过程
本主题介绍有关存储过程名称的详细信息。
如果您定义的过程具有相同的名称,但输入参数数据类型或签名不同,则将创建新的过程。因此会重载过程名称。有关更多信息,请参阅 重载过程名称。Amazon Redshift 不支持根据输出参数重载过程。您不能有两个过程,其名称和输入参数数据类型均相同但输出参数类型不同。
拥有者或超级用户可以将存储过程的正文替换为具有相同签名的新正文。要更改某个存储过程的签名或返回类型,请删除存储过程并重新创建它。有关更多信息,请参阅DROP PROCEDURE和CREATE PROCEDURE。
通过在实施前考虑您存储过程的命名约定,可以避免潜在的冲突和意外结果。由于您可以重载过程名称,它们可能与现有及以后的 Amazon Redshift 过程名称冲突。
重载过程名称
过程由其名称和签名标识,后者是输入参数的数目和参数的数据类型。同一 schema 中的两个函数可具有相同的名称,前提是它们的签名不同。换而言之,您可以重载过程名称。
在您运行过程时,查询引擎将根据您提供的参数数目和参数的数据类型来确定要调用哪个过程。您可以使用重载来模拟具有可变数量(不超过 CREATE PROCEDURE 命令允许的限制)的参数的过程。有关更多信息,请参阅 CREATE PROCEDURE。
防止命名冲突
我们建议您使用前缀 sp_
对所有过程进行命名。Amazon Redshift 保留 sp_
前缀,将其专用于存储过程。通过将 sp_
作为存储过程名称的前缀,您可以确保过程名称不会与任何现有或以后的 Amazon Redshift 过程名称冲突。