Я пытаюсь написать функцию для postgresql, чтобы сделать некоторые манипуляции со строками - PullRequest
1 голос
/ 19 октября 2010

Назначение функции - взять строку и, если она содержит символы Паренса, удалить все элементы в них. Вот что у меня есть:

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 $ ($ o $ в qname) = 0 ТОГДА

Я пытался найти хорошую документацию по синтаксису функции, но пока ничего не помогло.

1 Ответ

1 голос
/ 19 октября 2010

Вам необходимо "преобразовать" функцию из функции SQL в PL / pgSQL one - замените "LANGUAGE sql" на "LANGUAGE plpgsql" в вашем операторе CREATE FUNCTION.Также вам нужно будет «обернуть» ваш код в правильный блок .

OTOH, которого вы, вероятно, могли бы достичь тем же с помощью функции SQL, например, с некоторым умным пользователем CASE или аналогичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...