КРОК 4 - Запити з параметрами

Oracle має два власні типи змінних. Змінні зв'язки(bind variables)призначені для зберігання окремих значень, що присвоюються при виконанні команди. Змінні підстановки(Substitution variables)дозволяють зберігати введені вручну перед виконанням команди значення. Змінні підстановки позначаються префіксом & . Розпізнавши таку змінну у процесі виконання Oracle просить запровадити її значення і після введення продовжує виконання запиту користувача. Якщо символьна змінна в тексті програми записана в одинарних лапках (наприклад, YEAR_SAL), при введенні лапки не ставляться. Змінна підстановка з двома амперсендами (наприклад, &&NUM1) запитується один раз за сеанс. Оскільки значення змінних підстановки запитуються перед виконанням запиту, то з їх допомогою може вводитися і частина тексту команди . Наприклад, команда SELECT &STOLBETS . дозволяє при кожному виконанні змінювати ім'я стовпця, що виводиться.

Команда SQL*Plus DEF[INE] дозволяє встановити значення змінної на сеанс або до виконання команди UNDEF[INE] скасовує визначення. Приклад:

DEFINE REM = SAL * 12 SELECT ENAME, JOB, REM FROM EMP;

Примітка 1:Команда DEF видає всі певні змінні, команда DEF видає значення вказаної змінної, якщо вона не визначена, видається undefinite. Команда ACCEPT дозволяє визначати змінні та надавати їм значення в інтерактивному режимі. Формат команди:

ACC[EPT] имя_змінної [ NUMBERCHAR ] [ PROMPTNOPROMPT ‘текст_підказки’] [ HIDE ]

NUMBERCHAR - тип змінної; PROMPT - висвічування підказки; HIDE - приховує текст, що вводиться; зручний при введенні паролів.

Для командних файлів, які містять змінні підстановкивикористовують змінні спеціального виду. Їх дев'ять, імена від 1 до 9. Команда START у цьому випадку використовується у форматі:

причому перший фактичний параметр замінює &1, другий &2 і т.д.

Вправи

1.Напишемо команду, яка використовує запрошення під час виконання. Призначення – перерахувати всіх співробітників. прийнятих працювати у період між двома довільними датами.

SELЕСТ ENAME, JOB, MGR, DEPTNO FROM EMP WHERE JOB = 'JOB' ;

У запиті "Enter value for job:" введіть MANAGER і у вікні SQL*Plus Ви повинні отримати наступні значення:

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

У запиті "Enter value for job:" введіть MANAGER і у вікні SQL*Plus Ви повинні отримати наступні значення: