PostgreSQL
  • Introduction
  • PostgreSQL
    • Введение
    • Установка и базовые операции
    • Запуск команд SQL из файла
    • Агрегатные функции
    • Реляционная алгебра
    • Создание счётчика
    • Изменение структуры таблицы
    • Диапазоны и множества
    • Регулярные выражения
    • Скрипты SQL
    • Группировка
    • Регистры строк
    • Уникальные поля
    • Сортировки и вычисляемые поля
    • Представления
    • Массивы и триггеры
    • Индексы и анализ
    • Текстовый анализ
    • Использование RETURNING
    • Возврат массива записей
    • Внешние ключи
    • Ускорение БД
    • Запросы WITH
    • JSON
Powered by GitBook
On this page

Was this helpful?

  1. PostgreSQL

Скрипты SQL

Создаём функцию, считающую сумму чисел.

Вызываем данную функцию.

CREATE OR REPLACE FUNCTION find_summa(a INTEGER, b INTEGER) RETURNS INTEGER AS $$
    DECLARE c INTEGER;

    BEGIN
       c = a + b;
       RETURN c;
    END;

$$ LANGUAGE plpgsql;

SELECT find_summa(7, 3);

На основе функции, считающей сумму чисел, напишем функцию, считающую периметр прямоугольника.

Вызываем данную функцию.

CREATE OR REPLACE FUNCTION find_perimetr(side_first INTEGER, side_second INTEGER) RETURNS INTEGER AS $$
    DECLARE sum_of_sides INTEGER;
    DECLARE answer_perimetr INTEGER;

    BEGIN
       sum_of_sides = find_summa(side_first, side_second);
       answer_perimetr = sum_of_sides * 2;
       RETURN answer_perimetr;
    END;

$$ LANGUAGE plpgsql;

SELECT find_perimetr(4, 5);

Создаём функцию, проверяющую чётность числа.

Вызываем данную функцию.

CREATE OR REPLACE FUNCTION is_chetn(xxx INTEGER) RETURNS TEXT AS $$
    DECLARE answer_text TEXT;

    BEGIN
       IF (xxx % 2 = 0) THEN
        answer_text = 'YES';
       ELSE 
        answer_text = 'NO';
       END IF;

       RETURN answer_text;
    END;

$$ LANGUAGE plpgsql;

SELECT is_chetn(7);

Напишем функцию, считающую сумму всех целых чисел на отрезке.

Вызываем данную функцию.

В данном случае вычисление будет работать так: 4 + 5 + 6 + 7 = 22

CREATE OR REPLACE FUNCTION get_summa_of_all_numbers(start INTEGER, finish INTEGER) RETURNS INTEGER AS $$
    DECLARE my_iter INTEGER;
    DECLARE answer_summa INTEGER;

    BEGIN
       answer_summa = 0;

       FOR my_iter IN start..finish LOOP
        answer_summa = answer_summa + my_iter;
       END LOOP;

       RETURN answer_summa;
    END;

$$ LANGUAGE plpgsql;

SELECT get_summa_of_all_numbers(4,7);

Напишем функцию, которая выводит числа в виде 0_1_2_3_4_5_6_7

Вызовем данную функцию.

CREATE OR REPLACE FUNCTION make_string_of_numbers_and(finish INTEGER) RETURNS TEXT AS $$
    DECLARE nnn INTEGER;
    DECLARE big_string TEXT;

    BEGIN
       big_string = '';
       nnn = 0;

       WHILE nnn <= finish LOOP
        big_string = big_string || cast(nnn as TEXT);
        IF nnn <> finish LOOP THEN
           big_string = big_string || '_';
        END IF;
        nnn = nnn + 1;
       END LOOP;

       RETURN big_string;
    END;

$$ LANGUAGE plpgsql;

SELECT make_string_of_numbers_and(7);
PreviousРегулярные выраженияNextГруппировка

Last updated 5 years ago

Was this helpful?