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

时间:2016-07-11 00:54:02

标签: postgresql syntax plpgsql user-defined-functions quotes

之间有什么区别:

CREATE FUNCTION func() RETURNS integer
    LANGUAGE plpgsql AS $$
    declare
    begin
      -- do something
    end
$$;

CREATE FUNCTION func() RETURNS INTEGER AS $$
    declare
    begin
      -- do something
    end
$$ LANGUAGE plpgsql;

LANGUAGE plpgsql基本上是否必须超出$$用途的范围?

1 个答案:

答案 0 :(得分:4)

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

CREATE FUNCTION是一个声明性的SQL-DDL命令,根据definition in the manual,关键字的顺序非常自由。 (命令定义中的花括号内的关键词可以自由排列,但其余部分不能安排。)