Ноу Інти, лекція, об’єктно-орієнтоване програмування в pl

Подпрограммами називаються іменовані блоки PL / SQL, які можуть мати параметри.

Мова PL / SQL дозволяє створювати підпрограми і як процедури, і як функції PL / SQL.

Для того щоб підпрограму пакета можна було викликати ззовні, вона повинна бути оголошена в специфікації пакета. яка визначається оператором CREATE PACKAGE.

Для того щоб самостійну підпрограму можна було викликати ззовні вона повинна зберігатися в базі даних. Такі підпрограми називаються збереженими процедурами або збереженими функціями. Для їх створення застосовуються SQL- оператори CREATE PROCEDURE і CREATE FUNCTION.

Визначення процедури може мати наступне формальне опис:

Параметри в списку параметрів визначаються як:

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

Для визначення відповідності між формальними і фактичними параметрами передбачено два типи нотацій:

При позиційній нотації порядок формальних і фактичних параметрів повинен збігатися.

При іменованої нотації порядок вказівки параметрів не має значення, але перед значенням параметра вказується ім'я формального параметра і символ =>. Список параметрів може містити обидва типи нотацій одночасно, але іменована нотація розташовується тільки в кінці списку.

Процедура має дві частини:

  • специфікацію. що починається ключовим словом PROCEDURE і завершується ім'ям процедури або списком параметрів;
  • тіло процедури. що починається ключовим словом IS і завершується ключовим словом END.

Визначення функції може мати наступне формальне опис:

Мова PL / SQL дозволяє створювати перевантажуються підпрограми. мають однакове ім'я, але різний список формальних параметрів. Параметри перевантажуються функцій повинні відрізнятися хоча б по одному з наступних ознак: за типом, за кількістю, по порядку проходження параметрів.

Рекурсивні і взаємно рекурсивні виклики підпрограм

Рекурсивним викликом називається виклик підпрограми з тіла цієї ж підпрограми.

При кожному рекурсивном виклик:

  • створюється новий екземпляр всіх елементів, оголошених в підпрограмі. включаючи параметри, змінні, курсори і виключення;
  • створюється свій екземпляр SQL-оператора.

Розглянемо як приклад рекурсивних викликів створення послідовності Фібоначчі (1, 1, 2, 3, 5, 8, 13, 21.), в якій кожен наступний елемент є сумою двох попередніх.

Наступна функція fibonati1 реалізує формування послідовності Фібоначчі із застосуванням рекурсії:

Замість рекурсивного способу можна використовувати і ітераційний спосіб, який менш наочний, але вимагає і менше пам'яті, і швидше виконується.

Так, наступна функція fibonati2 реалізує формування послідовності Фібоначчі ітераційним способом:

Мова PL / SQL дозволяє реалізовувати взаємно рекурсивні виклики. при яких підпрограми прямо або опосередковано викликають один одного.