postgresql - 在函数体之前或之后声明 "LANGUAGE plpgsql"?

标签 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 是否基本上必须在 $$ 用法范围之外?

最佳答案

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

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

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

关于postgresql - 在函数体之前或之后声明 "LANGUAGE plpgsql"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38297776/

相关文章:

sql - PostgreSQL 在 json 中插入动态值

haskell - 使用 Haskell 中的函数更新记录中的字段

arrays - for 循环中的 PL/pgSQL "Malformed array literal"错误

database - 查询在触发后没有结果数据的目的地

excel - 连接到 PostgreSQL 数据库时在 Power Query 中参数化源

postgresql - 如何将公共(public)模式恢复为不同的模式

perl - Perl源代码中的 "1;"是什么?

java - 使用 Java 流将集合转换为映射 : how to put predefined Enum as value

sql - 在 plpgsql 中,如何使用可变数量的标识符创建和执行命令字符串?

php - PHP 变量可以用作 SQL 查询中的表名吗?