Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
07.08.2013
Размер:
395.62 Кб
Скачать

4. Основні елементи мови pLpgSql

4.1 Структура мови, функції користувача.

PL/pgSQL належить до сімейства процедурних мов, вона схожа на мову PL/SQL системи Oracle. Мова PL/pgSQL є процедурним розширенням мови SQL, тому може використовувати всі її типи даних, оператори і функції. Це підвищує гнучкість використання і швидкодію команд SQL, оскільки в програмному блоці вони виконуються за одну операцію замість звичайної обробки кожної команди. Важливою особливістю PL/pgSQL є високий ступінь адаптованості програм до всіх платформ, на яких вони базуються.

Структура мови. Мова PL/pgSQL відносно проста, кожен її логічно відокремлений фрагмент коду існує у вигляді функції. До певної міри програми подібні до написаних мовою С: всі змінні обов’язково оголошуются перед використанням, функції отримують аргументи при виклику і повертають потрібні значення при закінченні роботи та ін.

Регістр символів в іменах функцій PL/pgSQL не регламентований. У ключових словах і ідентифікаторах допускається використання довільних комбінацій символів верхнього та нижнього регістрів.

Програмний блок. При першому виготовленні функції створюється мова програмування командою CREATE LANGUAGE, зазвичайно це plpgsql. Виготовити програмний блок (функцію) можна командою SQL CREATE FUNCTION, у її складі може міститися інструкція OR REPLACE, яка дозволяє редагувати функцію.

Функція являє собою блок, який містить секцію DECLARE – оголошення даних та BEGIN – команди, які виконуються. Закінчується програмний блок словом END. Загальний вигляд програмного блока:

CREATE LANGUAGE мова_програмування;

CREATE OR REPLACE FUNCTION ім’я_функції (перелік_типів_аргументів)

RETURNS тип_поверненого_значення

AS $$ DECLARE оголошення даних; BEGIN команди; END; $$

LANGUAGE 'мова_програмування';

Коментарі мови PL/pgSQL подібні до мови С++, вони є двох типів. Коментарі першого типу – однорядкові, починаються з двох дефісів, другого – блокові, беруться у знаки /* та */.

В оголошенні задаються імена і типи змінних, кожне оголошення або команда завершується символом крапки з комою. Крім типів даних, визначених мовою SQL, мова PL/pgSQL має ще три додаткові типи, які дозволяють працювати з таблицями та іншими об’єктами БД (вибирати їхні значення), це:

  • RECORD – для записів без вказання типів полів;

  • %ROWTYPE – для записів, тип яких відповідає типам полів конкретного об’єкта;

  • %TYPE – для змінної, тип якої відповідає типу конкретного поля об’єкта (таблиці).

Ці додаткові типи вигідні тим, що в разі зміни типу даних, наприклад, таблиці, автоматично змінюється й відповідний тип запису чи змінної функції.

Змінні можуть бути ініціалізовані під час оголошення. Подібно до мови С в оголошенні можна використовувати модифікатор CONSTANT. Модифікатор NOT NULL означає, що змінна обов’язково повинна бути ініціалізова під час оголошення. Аргументи, прийняті функцією, можна спеціально не оголошувати, тоді їхні значення по черзі присвоюються ідентифікаторам, які утворюються автоматично і складаються із знака долара та порядкового номера (зліва направо). Першому аргументу відповідає ідентифікатор $1, другому – $2 і т. д. Максимально допустима кількість аргументів дорівнює 16, тому ідентифікатори аргументів лежать у інтервалі від $1 до $16. Якщо аргументів є декілька, то з метою уникнення плутанини їх варто замінити псевдонімами – ідентифікаторами нутрішніх змінних функції за допомогою слова ALIAS, наприклад, так:

ідентифікатор_змінної_1 ALIAS FOR $1; ідентифікатор_змінної_2 ALIAS FOR $2; і т. д.

Присвоєння значень змінним виконує оператор := подібно до мови Pascal. Мова PL/pgSQL призначена в основному для роботи з таблицями БД, тому має варіант запиту – команду SELECT INTO, яка також дозволяє присвоювати змінним результати його виконання. Ця команда застосовується в основному для запам’ятовування записів (полів) вибірки змінним, оголошених з типами RECORD, %ROWTYPE і %TYPE (для поля). Якщо команда SELECT INTO видає своє значення звичайній змінній, то її тип повинен відповідати типу відповідного запису (поля) вибірки. Наголосимо на тому, що вона повинна повертати лише одне якесь значення (адже змінна то одна). Синтаксис команди SELECT INTO:

SELECT INTO перелік_імен_змінних перелік_імен_полів

FROM джерело

секції_команди_SELECT;

Значення, яке повертає функція, передає команда RETURN, її наявність у програмному блоці обов’язкова, навіть якщо функція нічого не повертає. Тип цього значення повинен відповідати типу_поверненого_значення, вказаному при її створенні. Команда RETURN знаходиться наприкінці функції, але вона також часто зустрічається і в командах IF та інших, які здійснюють передачу управління у програмі..

Виклик функції (звертання до функції) забезпечує команда:

SELECT ім’я_функції(перелік_дійсних_параметрів);

Соседние файлы в папке курсовая docx100