函数的目的是获取一个字符串,如果它包含parens,则删除parens中的所有内容。以下是我所拥有的:

CREATE FUNCTION clearmethodparams(IN qname text) RETURNS text AS
  $BODY$
  IF position($o$($o$ in qname) = 0 THEN
    return qname;
  ELSE
    return substring(qname from 0 for position($p$($p$ in qname)) || $c$)$c$;
  END IF;
  $BODY$
LANGUAGE sql VOLATILE;

它一直给我的错误是
错误:“IF”处或附近的语法错误
第3行:如果位置($o$(qname中的$o$)=0
那么
我一直在试图找到一些关于函数语法的好文档,但到目前为止没有任何帮助。

最佳答案

您需要将函数从SQL function转换为PL/pgSQLone-在CREATE function语句中将“LANGUAGE sql”替换为“LANGUAGE plpgsql”。此外,您还需要在一个适当的block中“包装”您的代码。
你也许可以用一个SQL函数来实现同样的功能,比如用一些聪明的CASE或类似的用户。

10-05 20:30