这两个功能有区别吗?
第一
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$
也许其中一个是旧版本的方式,它可能会在未来版本中被删除?
答案 0 :(得分:3)
他们是等同的; $$...$$
和$foo$...$foo$
都是dollar-quoted string constants。 (foo
部分是可选的;它只是让您在字符串实际包含$$
的情况下准确地结束字符串。)
答案 1 :(得分:1)
没有真正的区别。你选择了你的功能结束'关键字AS
后面带有' $$引用'的标记。在第一种情况下,所选标记为$$
;在第二个,它是$BODY$
。没有其他显着差异;该语言对关键字不区分大小写。
答案 2 :(得分:0)
函数本身是相同的:正如已经指出的那样,唯一的区别是结束标记。
虽然函数的声明是不同的:CREATE FUNCTION
声明不会覆盖具有相同名称的现有函数,而CREATE OR REPLACE FUNCTION
将会。{/ p>