Простая функция в PostgreSQL

PostgreSQL достаточно серьёзно отличается от других языков запросов SQL. Хотя бы тем, что является типизированным. И подход PostgreSQL очень похож в некоторых местах на языки программирования. Например, на C/C++.

В PostgreSQL нет хранимых процедур.  Вместо них хранимые функции. При чём функции могут и не иметь выходных данных.

Каждая функция может выводить только определённый тип данных. Пример:

/**Создаём или обновляем функцию с названием print в схеме public со входным параметром cif типа данных integer (целые числа)**/
CREATE OR REPLACE FUNCTION public.print (cif integer)
/**Указываем, что типом выходных данных является integer 
(целые числа)**/
RETURNS integer AS
/** Начинаем тело процедуры**/
$body$ 
/**Программные скобки**/
BEGIN
/**Выводим тот самый результат cif **/
 RETURN cif; 
/**Закрываем программные скобки**/
END; 
/**Закрываем тело**/
$body$ 
/**Указываем, что синтаксис plsql**/
LANGUAGE 'plpgsql';

В данном примере описана простая функция, которая выводит целое число, которое ей даётся на вводе. Рассмотрим подробнее каждую часть (осторожно, чайнтаун!)

CREATE OR REPLACE FUNCTION public.print (cif integer)

Конструкция CREATE OR REPLACE FUNCTION создаёт или изменяет функцию, если она создана. PUBLIC - это схема. А print - это название функции. Назвать функцию можно как угодно. Но нужно пытаться не использовать системные (зарезервированные имена). Странность PostgreSQL заключается в том, что системным именем здесь является даже "name". Переменная cif целочисленного типа integer является входными данными.

 RETURNS integer AS

Эта конструкция указывает, что на выходе будут данные в виде целочисленного числа.

$body$

Если вы знаете хоть немного HTML, то поймёте эту конструкцию, которая отображает тело функции.

BEGIN

Программные скобки являются словесными синтаксическими конструкциями.

 return cif;

Выводить можно что угодно, но в данной функции это "Что угодно" должно быть целочисленным.

END;

Это закрытие программных скобок.

LANGUAGE 'plpgsql';

А вот с этой строкой часто возникает вопрос. А зачем? Дело в том, что PostgreSQL - это мощная СУБД, писать запросы под которую можно на разных языках. Например, доступен TCL. Чтобы сервер понял, на каком именно языке запросов написана инструкция, необходимо это указать.

Сразу предупреждаем тех, кто хочет просто взять, скопировать код и думает, кто код тут же заработает. Возможно, это и так. На самом деле, у PGAdmin есть ошибка правильной сборки при копировании из разных источников с разным форматированием (видать, PGAdmin его как-то учитывает). Если вы хотите, чтобы указанный пример у вас заработал, перепишите его вручную или скопируйте сначала в блокнот (в Windows программа NotePad, в Linux Gedit или Nano), а после копируйте в редактор кода PGAdmin.

3 комментария на “Простая функция в PostgreSQL

  1. Удивитeльноe и серьёзноe предлoжениe сдeлал в пpямoм эфире, caмыйлучший эkсперт и анaлитик в oблaсти финaнсoв Cepгей Лeбeдев. Тепeрb вce kто yспел и зaшел нa caйт, начнyт зapабатывaть cотни тысяч pублeй, c пeрвoгo дня. Пpoграмму и вce инструkции Вы можете получитb пo ccылkе под видeо нa нашем реcуpсе. Мы выложили ссылky спeциaлbнo для тex людей, kто ocтpо нуждaeтcя в финaнсаx, и y когo естb kредиты, сeгодня Вы можeтe pешить cвои пpоблeмы paз и нaвсeгда.

  2. Я — наcтоящий челoвеk! Hаскoльko этo вaжно для Вaс? Ужe сeгодня Bы зарабoтaeте cвoи пepвыe денежkи с пoмощbю хитpoгo маневpa, kотoрый я пригoтовилa для Bас! 3a Baс будeт paботaтb бeсплaтный, полнocтbю aвтомaтизиpованный oнлайн-инструмент, который момeнталbно выполнит гpaмoтный, а главноe литеpатурный пеpeвод на 12-ти языкаx мирa!

  3. Я нашeл cпoсoб, kаk полyчатb от 75000 pублей за день!! Beсb пpoцеcс пoлностbю мной автoматизировaн и не нyждaетcя в спeциальных знaний и навыkoв. Выплaчено ceгодня: 499 217.56 рyб. Tyт вce очeнь пpoсто!

Добавить комментарий

Ваш e-mail не будет опубликован.