在函数体之前还是之后声明“LANGUAGE plpgsql”?

Ben*_*Ben 6 postgresql syntax quotes plpgsql user-defined-functions

之间有什么区别:

CREATE FUNCTION func() RETURNS integer
    LANGUAGE plpgsql AS $$
    declare
    begin
      -- do something
    end
$$;
Run Code Online (Sandbox Code Playgroud)

CREATE FUNCTION func() RETURNS INTEGER AS $$
    declare
    begin
      -- do something
    end
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

LANGUAGE plpgsql基本上只需要超出使用范围吗$$

Erw*_*ter 6

没有任何区别。
函数体是一个字符串文字。它们$$只是美元引号,也可以是单引号(但最好使用美元引号!):

CREATE FUNCTION是一个声明性 SQL-DDL 命令,并且关键字的顺序非常自由,按照手册中的定义。(命令定义中大括号内的关键字可以自由排列,其余的则不能)。

我最终决定始终将语言声明与函数头的其余部分放在函数体之前。更有意义。