Первый , функция требует двух параметров в определении, как уже предлагал Ричард, и вы соответствующим образом обновили свой вопрос.
Второй , вы можете создать эту функцию с помощью "any"
, используя LANGUAGE internal
.Это не значит, что вам следует это делать.
concat_ws()
- это всего лишь STABLE
по причине.Среди прочего, текстовое представление date
или timestamp
зависит от настроек локали / стиля даты, поэтому результат не является неизменным .Индексы, построенные на этом, могут молча сломаться.Ограничен на text
ввод, можно объявить его IMMUTABLE
.Поскольку вам нужен только ввод text
(или varchar
, который имеет неявное приведение к text
), ограничьте его вашим вариантом использования и будьте в безопасности:
CREATE OR REPLACE FUNCTION immutable_concat_ws(text, VARIADIC text[])
RETURNS text AS 'text_concat_ws' LANGUAGE internal IMMUTABLE;
Не поддавайтесь искушению делать что-либокак это immutable_concat_ws('|', now()::text, 'foo')
.Это приведет к повторному введению указанных зависимостей в вызове.
Related: