Возвращение переменных
Конкатенация
Конкатенацией называется процесс построения новой строки посредством объединения двух (и более) строк. Конкатенация принадлежит к числу стандартных операций PostgreSQL и поэтому может напрямую использоваться с переменными в функциях PL/pgSQL. Это незаменимый инструмент форматирования при работе с несколькими переменными, содержащими символьные данные.
Конкатенация используется только со строками. Оператор конкатенации (||) ставится между объединяемыми компонентами (литералами или строковыми переменными). Вы можете объединить две строки в одну составную строку или сформировать более сложную комбинацию из нескольких исходных строк.
В листинге 11.32 операция конкатенации создает строку, возвращаемую функцией.
Листинг 11.32. Возвращение результата конкатенации.
CREATE FUNCTION compound_word(text .text) RETURNS text AS ' DECLARE --Объявление псевдонимов для аргументов функций. wordl ALIAS FOR $1: word2 ALIAS FOR $2: BEGIN --Вернуть объединение двух слов. RETURN wordl || word2: END: ' LANGUAGE 'plpgsql:
Если передать функции аргументы "break" и "fast", функция вернет объединенную строку "breakfast":
booktown=# SELECT compound_word('break'. 'fast'); compound_word breakfast (1 row)
В листинге 11.33 строковой переменной result присваивается результат конкатенации нескольких компонентов.
Листинг 11.33. Присваивание строковой переменной результата конкатенации.
CREATE FUNCTION title_and_author (text, text) RETURNS text AS ' DECLARE --Объявление псевдонимов для двух аргументов функции, title ALIAS for $1: author ALIAS for $2: --Объявление текстовой переменной для хранения --строкового результата конкатенации, result text; BEGIN --Объединить переменные title и author. --разделив их запятой .result: = title | " .by " 11 author; --Вернуть полученную строку. return result: END; ' language 'plpgsql';
Если передать этой функции строки "Practical PostgreSQL" и "Command Prompt, Inc.", то функция вернет строку "Practical PostgreSQL, by Command Prompt, Inc.":
booktown=# SELECT title_and_author('Practical PostgreSQL'.'Command Prompt, Inc.'); title and author Practical PostgreSQL .by Command Prompt. Inc. (1 row)