我有这样的功能:
CREATE OR REPLACE FUNCTION current_name()
RETURNS text AS 'select foo;' LANGUAGE sql;
除非它不起作用。 RETURN TEXT "SELECT 'foo';"
如何保持用SQL编写,但仍然返回文本?
答案 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;