这两种功能有什么区别?

时间:2016-01-13 06:50:06

标签: postgresql

这两个功能有区别吗?

第一

CREATE FUNCTION sales_tax(subtotal real) RETURNS real AS $$
BEGIN
    RETURN subtotal * 0.06;
END;
$$ LANGUAGE plpgsql;

第二

CREATE OR REPLACE FUNCTION sales_tax(subtotal real) RETURNS real  AS
$BODY$
begin
    RETURN subtotal * 0.06;
end;
$BODY$
  LANGUAGE plpgsql

为什么一个人有$$而另一个人有$body$? (PostgreSQL的) What are '$$' used for in PL/pgSQL不是我问题的答案。解释了$的一般内容,而不是$body$

也许其中一个是旧版本的方式,它可能会在未来版本中被删除?

3 个答案:

答案 0 :(得分:3)

他们是等同的; $$...$$$foo$...$foo$都是dollar-quoted string constants。 (foo部分是可选的;它只是让您在字符串实际包含$$的情况下准确地结束字符串。)

答案 1 :(得分:1)

没有真正的区别。你选择了你的功能结束'关键字AS后面带有' $$引用'的标记。在第一种情况下,所选标记为$$;在第二个,它是$BODY$。没有其他显着差异;该语言对关键字不区分大小写。

答案 2 :(得分:0)

函数本身是相同的:正如已经指出的那样,唯一的区别是结束标记。

虽然函数的声明是不同的:CREATE FUNCTION声明不会覆盖具有相同名称的现有函数,而CREATE OR REPLACE FUNCTION将会。{/ p>