postgres功能101:返回文本

时间:2015-04-22 23:13:58

标签: postgresql

我有这样的功能:

CREATE OR REPLACE FUNCTION current_name()
RETURNS text AS 'select foo;' LANGUAGE sql;

除非它不起作用。 RETURN TEXT "SELECT 'foo';"

也没有

如何保持用SQL编写,但仍然返回文本?

1 个答案:

答案 0 :(得分:1)

我认为这是使其发挥作用所需的最小变化。

CREATE OR REPLACE FUNCTION current_name()
RETURNS text AS 
'select ''foo''::text;'
LANGUAGE sql;

您将看到SQL语句(函数体)是一个字符串。必须引用字符串,并且必须转义引用字符串中的单引号。很快你会有比实际文本更多的引号。

写这样的东西的常用方法是使用dollar quoted string constant

CREATE OR REPLACE FUNCTION current_name()
RETURNS text AS 
$$
  select 'foo'::text;
$$
LANGUAGE sql;