2010-10-19 46 views
1

函數的目的是取一個字符串,如果它包含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

我一直試圖找到函數的語法一些好的文檔,但沒有到目前爲止是有幫助的。

回答

1

您需要將函數從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

相關問題