我想为postgresql编写一个函数来执行一些字符串操作
问题描述:
函数的目的是取一个字符串,如果它包含parens,则删除parens中的所有内容。下面是我有:我想为postgresql编写一个函数来执行一些字符串操作
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;
它不断给我的错误是
ERROR: syntax error at or near "IF" LINE 3: IF position($o$($o$ in qname) = 0 THEN
我一直试图找到函数的语法一些好的文档,但没有到目前为止是有帮助的。
答
您需要将函数从SQL function“转换”为PL/pgSQL - 在CREATE FUNCTION语句中将“LANGUAGE sql”替换为“LANGUAGE plpgsql”。此外,您需要将代码“包装”在适当的block中。
OTOH您可能可以通过SQL函数实现同样的功能,例如,与一些聪明的用户CASE
或类似。
感谢Milen,但它在编辑后仍然出现同样的错误...等待我明白了 - 我只需要BEGIN和END语句。谢谢!!! – 2010-10-19 18:16:59
哦,是的 - 我会补充一点以备将来参考。 – 2010-10-19 18:25:30