我想为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或类似。

+0

感谢Milen,但它在编辑后仍然出现同样的错误...等待我明白了 - 我只需要BEGIN和END语句。谢谢!!! – 2010-10-19 18:16:59

+0

哦,是的 - 我会补充一点以备将来参考。 – 2010-10-19 18:25:30