СТЪПКА 4 - Запитвания за параметри

Oracle има два собствени типа променливи. Променливи на връзката (свързване на променливи) са предназначени за съхраняване на отделни стойности, присвоени по време на изпълнение на командата.
Заместващи променливи (Заместващи променливи) ви позволява да съхранявате ръчно въведени стойности преди изпълнение на команда.
Заместващите променливи са с префикс &. След като разпозна такава променлива по време на изпълнение, Oracle иска да въведе нейната стойност и след въвеждането й продължава да изпълнява заявката на потребителя. Ако символна променлива в текста на програмата е написана в единични кавички (например ‘YEAR_SAL’), при въвеждане не се използват кавички.
Заместваща променлива с два амперсанда (напр. && NUM1) се изисква веднъж на сесия.
Тъй като стойностите на заместващите променливи се изискват преди изпълнение на заявката, те могат да се използват за въвеждане и част от командния текст.
Например команда SELECT & STOLBETS. ви позволява да променяте името на показаната колона при всяко изпълнение.

Командата SQL * Plus DEF [INE] ви позволява да зададете стойността на променлива на сесия или преди командата UNDEF [INE] да отмени дефиницията.
Пример:

ОПРЕДЕЛЕТЕ REM = SAL * 12
ИЗБЕРЕТЕ ENAME, JOB, REM FROM EMP;

Забележка 1: Командата DEF извежда всички дефинирани променливи, командата DEF извежда стойността на посочената променлива, ако не е дефинирана, се издава неопределено.

Командата ACCEPT ви позволява да дефинирате променливи и да им присвоявате стойности интерактивно.
Формат на командата:

ACC [EPT] име на променлива [NUMBER | CHAR] [PROMPT | NOPROMPT ‘hint_text’] [HIDE]

НОМЕР | CHAR - тип променлива;
БЪЛГАРСКИ - бързо подчертаване;
HIDE - скрива въведения текст; удобно при въвеждане на пароли.

Променливи от специален вид се използват за командни файлове, съдържащи заместващи променливи. Има девет от тях, имена от 1 до 9. Командата START в този случай се използва във формата:

като първият действителен параметър замества & 1, вторият & 2 и т.н.

Упражнения

един. Нека напишем команда, използвайки ред за изпълнение. Целта е да се изброят всички служители. нает между две произволни дати.

НАЙ-ДОБРАТА ИГРА, РАБОТА, MGR, ДЕПТНО ОТ EMP КЪДЕ РАБОТА = '& РАБОТА';

В появилата се заявка "Въведете стойност за работа:" въведете MANAGER и в прозореца SQL * Plus трябва да получите следните стойности:

2. Нека дефинираме променлива, която представлява израз за изчисляване на общите годишни начисления на служители. Използваме тази променлива в екип, който намира всички служители, чиито годишни начисления са поне $ 30 000.

В появилата се заявка "Въведете стойност за работа:" въведете MANAGER и в прозореца SQL * Plus трябва да получите следните стойности: