НОУ ІНТУІТ, Лекція, Ефективне програмування в PL

Програмні одиниці Oracle Forms

Ця тема досить велика, і її розгляд гідно окремої книги, тому наше завдання - не стільки занурення у всі тонкощі техніки та стилю програмування, скільки базове ознайомлення з основними методологіями, яке дасть вам відправну точку у вивченні побудови методів і в Oracle Forms, і в PL/SQL.

Розробляючи програми, ви неодноразово стикаєтеся з повторним використанням коду або його фрагментів. Підпрограми спочатку з'явилися як оптимізації - вони дозволили не повторювати у програмі ідентичні блоки коду. Підпрограми покращують читаність програми та її супровід за рахунок структуризації коду та логічного виділення цілісного завдання. Використовуючи підпрограми, ви не тільки позбавляєтеся зайвої роботи, але й заощаджуєте час на налагодженні та модифікації коду, оскільки змінюєте не весь код, а конкретну підпрограму.

Підпрограма(subprogram) - це іменована частина програми, що містить опис певного набору дій. Підпрограма може бути багаторазововикликаназ різних частин програми. Розрізняють два види підпрограм: функції та процедури.

Ми з вами розглянемо різні види програмних структур, представлених у Oracle Forms, а саме:

  • Пакет
  • Функція
  • Процедура

Будь-яка програмна структура, створена в Oracle Forms, не доступна в базі даних, вона доступна тільки в модулі, в якому створена.

Функція (Function)

Функція- це один із видів підпрограми, на вхід якої надходять значення у вигляді аргументів різних типів даних, а на виході виходить результат її виконання.Результат, що повертається функцією, може бути відмінним від вхідних параметрів. Відмінність функції від іншого виду підпрограм - процедури - у тому, що функція повертає значення , та її виклик можна використовувати у програмі як вираз .

ефективне

Щоб ознайомитися з цим поняттям ближче, виконаємо вправу, у якому створимо три функції, що виконують операції з датою:

  • HOW_DAY - повертає кількість тижнів певного дня тижня цього місяця.
  • DAYS_IN_MONTH – повертає кількість днів на місяці.
  • FIRST_DAY – повертає перший день місяця.

лекція

Створіть самостійно другу функцію - DAYS_IN_MONTH. У тілі функції напишіть та скомпілюйте наступний код:

Створіть заключну, третю функцію – FIRST_DAY . У тілі функції напишіть та скомпілюйте наступний код:

Звернення до функцій у програмі

Функції, створені в Oracle Forms, не можуть безпосередньо брати участь у SQL-запитах. Обійти це обмеження можна, передавши значення функції будь-якої змінної, яку можна підставити в запит. Наприклад, наступний PL/SQL-блок викликає помилку компіляції - "Функція HOW_DAY не може бути використана в SQL":

Якщо вам необхідно використовувати значення функції за умови запиту, то вам потрібно спочатку привласнити це значення будь-якої змінної:

Процедура – ​​це будь-яка підпрограма, яка не є функцією. Ви можете обертати у процедуру будь-яке типове завдання. Як було зазначено раніше, процедура на відміну функції не повертає значення і може бути використана як вираз , тому виконується як окремий оператор. Можна навести безліч прикладів, які продемонструють, як замінити блок коду одним рядком. Наприклад, якщо передвами стоїть завдання заборонити видалення рядка, і якщо вона єдина, то замість того, щоб кілька разів писати один і той же блок коду, можна обернути його в процедуру.

Тепер, коли ми створили процедуру DONT_DELETE_LAST_RECORD , для цього обмеження в кожному блоці вам достатньо буде написати всього один рядок.

Ви також можете передавати параметри процедуру, причому параметри можуть бути різного типу. Наприклад розглянемо процедуру, що створює таблицю з N стовпців.