Ноу Інти, лекція, об’єктно-орієнтоване програмування в 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 дозволяє реалізовувати взаємно рекурсивні виклики. при яких підпрограми прямо або опосередковано викликають один одного.