Слайд 2
![Темы Простой блок PL/SQL и его компоненты Роль переменных в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-1.jpg)
Темы
Простой блок PL/SQL и его компоненты
Роль переменных в PL/SQL
Разница между переменными
PL/SQL и прочими переменными
Объявление переменных PL/SQL
Выполнение блока PL/SQL
Слайд 3
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-2.jpg)
Слайд 4
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-3.jpg)
Слайд 5
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-4.jpg)
Слайд 6
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-5.jpg)
Слайд 7
![Обработка переменных в PL/SQL Объявление и инициализация переменных в декларативной](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-6.jpg)
Обработка переменных в PL/SQL
Объявление и инициализация
переменных в декларативной секции.
Присвоение новых значений
переменным
в исполняемой секции.
Передача значений в блоки PL/SQL с
помощью параметров.
Просмотр результатов с помощью
выходных переменных.
Слайд 8
![Типы переменных • Переменные PL/SQL Скалярные Составные Ссылочные LOB (большие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-7.jpg)
Типы переменных
• Переменные PL/SQL
Скалярные
Составные
Ссылочные
LOB (большие объекты)
• Прочие переменные (не PL/SQL)
- Связанные переменные и хост-
переменные
Слайд 9
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-8.jpg)
Слайд 10
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-9.jpg)
Слайд 11
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-10.jpg)
Слайд 12
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-11.jpg)
Слайд 13
![Второй способ Еще один способ присвоения значений переменным - это](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-12.jpg)
Второй способ
Еще один способ присвоения значений переменным - это выборка значений
базы данных в эти переменные. SELECT sal * 0.10 INTO bonus
FROM emp
WHERE empno = 7369;
Слайд 14
![Пример DECLARE Product NUMBER; BEGIN SELECT quantity_on_hand INTO product FROM](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-13.jpg)
Пример
DECLARE
Product NUMBER;
BEGIN
SELECT quantity_on_hand
INTO product
FROM pl.product
WHERE product_name = 'Small Widget';
dbms_output .put_line
('Small Widget ' I I product) ;
END;
Слайд 15
![Оператор IF Оператор IF имеет следующий синтаксис: IF условие_1 THEN](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-14.jpg)
Оператор IF
Оператор IF имеет следующий синтаксис:
IF условие_1 THEN
действие_1;
[ELSIF условие_2 ТНЕN
действие_2',
[ELSE
альтернативное_действие]
END IF;
Слайд 16
![Пример CREATE FUNCTION compute_discounts (order_amt NUMBER) RETURN NUMBER IS small_order_amt](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-15.jpg)
Пример
CREATE FUNCTION compute_discounts (order_amt NUMBER)
RETURN NUMBER IS
small_order_amt NUMBER := 400;
large_order_amt NUMBER
:= 1000;
small_disct NUMBER := 1;
large_disct NUMBER := 5;
BEGIN
IF (order_amt < large_order_arat AND order_amt >= small_order_amt)
THEN
RETURN (order_amt * small_disct / 100) ;
ELSIF (order_amt >= large_order_amt) THEN
RETURN (order_amt * large_disct / 100);
ELSE
RETURN(0);
END IF;
END compute_discounts;
Слайд 17
![Циклы > LOOP операторы; EXIT имя_цикла [WHEN условие_выхода]; Операторы; END](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-16.jpg)
Циклы
<<имя_цикла>>
LOOP
операторы;
EXIT имя_цикла [WHEN условие_выхода];
Операторы;
END LOOP;
Если условие WHEN отсутствует, операторы между LOOP
и EXIT выполняются только один раз
Слайд 18
![Цикл WHILE WHILE условие_выхода LOOP операторы; END LOOP;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-17.jpg)
Цикл WHILE
WHILE условие_выхода
LOOP
операторы;
END LOOP;
Слайд 19
![Цикл FOR FOR счетчик IN [REVERSE] нижняя_граница .. Верхняя_граница :, LOOP операторы; END LOOP;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/363938/slide-18.jpg)
Цикл FOR
FOR счетчик IN [REVERSE] нижняя_граница .. Верхняя_граница :,
LOOP
операторы;
END LOOP;