PostgreSQL中的函数中是否存在命名参数的约定

uri*_*ium 6 postgresql plpgsql

我来自SQL Server后台,在存储过程中使用/鼓励使用'@'符号.这很有用,因为您可以轻松查看列是什么以及值是什么.例如.

CREATE PROCEDURE Foo
    @Bar    VARCHAR(10),
    @Baz    INT
AS
BEGIN
    INSERT INTO MyTable (
        Bar,
        Baz)
    VALUES (
        @Bar,
        @Baz)

END
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用序数位置但是我们的一些存储过程有20个左右的参数,并且命名参数使它更易读IMO.

PostgreSQL社区是否有某种约定用于前缀?我试图找出确切的命名参数的规则,但我的谷歌搜索没有产生任何东西.

Clo*_*eto 7

参数标识符遵循与其他标识符相同的规则:

http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

http://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS

通常使用下划线来启动参数标识符,_我认为它有意义,尽管它不是惯例.

通过使用函数名称限定标识符,也可以避免歧义

my_funtion.my_parameter
Run Code Online (Sandbox Code Playgroud)

  • 我也在不知情的情况下挑选了下划线.我真的不想重复重复这个功能名称. (2认同)
  • 我也喜欢下划线下划线,因为当参数名称与表列名称发生冲突时,大多数数据库会变得非常困惑(假设没有人被误导到足以命名带有前导下划线的列 - 我已经看到它完成了) (2认同)