Lab 9 PLSQL Основы языка.ppt
- Количество слайдов: 10
PL/SQL ОСНОВЫ ЯЗЫКА Корпорация Oracle ввела в употребление PL/SQL для того, чтобы избавиться от некоторых ограничений, существующих в SQL, а также для того, чтобы иметь возможность предложить более полное программное решение разработчикам жизненно важных приложений, работающих с базами данных Oracle.
PL/SQL - это процедурное расширение языка SQL. PL/SQL - это высокоструктурированный, удобочитаемый и доступный язык. Язык несложен в изучении, названия его многочисленных ключевых слов и структур явно указывают на то, что делает данный фрагмент кода. PL/SQL - это стандартный и переносимый язык для разработки приложений на Oracle. Написав на своем компьютере PL/SQLпроцедуру или функцию для работы с базой данных Oracle, вы можете затем перенести эту процедуру в базу данных своей корпоративной сети и выполнять ее без каких бы то ни было изменений (естественно, при условии Принцип «Write once, run everywhere» (написав однажды, запускай везде) был девизом PL/SQL задолго до появления Java. Для PL/SQL «везде» совместимости версий Oracle). понимается как «везде, где есть база данных Oracle» . - это встроенный язык. PL/SQL создавался не для автономной работы, а для того чтобы выполняться в определенной среде. Например, вы можете запускать программы на PL/SQL в базе данных (скажем, через интерфейс SQL*Plus). Вы также можете создать программу на PL/SQL и вызвать ее из формы или отчета Oracle Developer (так называемый «клиентский PL/SQL» ). PL/SQL - это высокопроизводительный и высоко интегрированный язык для работы с базами данных. В наше время существует широкий выбор средств, которые можно применять при создании приложений, работающих с базами данных Oracle. Можно использовать Java и JDBC, Visual Basic и ODBC, Delphi, C++ и т. д. Однако вы увидите, что проще всего написать эффективный код для доступа к базе данных Oracle именно на PL/SQL
PL/SQL Основные элементы синтаксиса. Как и в большинстве процедурных языков, в PL/SQL наименьшей значимой единицей группировки кода является блок. Блок - это конструкция, обеспечивающая выполнение фрагмента кода и определяющая границы видимости переменных и область действия обработчиков исключений. PL/SQL позволяет создавать анонимные блоки (блоки кода, не имеющие названия) и именованные блоки (это могут быть процедуры, функции или триггеры). PL/SQL: Структура блока DECLARE - необязательный блок Константы, переменные, типы, курсоры BEGIN - обязательный блок Команды SQL, Команды PL/SQL EXCEPTION - необязательный блок Действия при возникновении ошибки END; - Завершение блока BEGIN
Переменные и константы в PL/SQL В PL/SQL можно объявить переменные, а затем Примеры объявления: использовать их в командах SQL и процедурных командах DECLARE в любом месте, где допустимо использование выражения. В_ДАТА_ПРИЕМА DATE; Переменные могут быть: скалярные, составные, В_ИМЯ VARCHAR 2(100) NOT NULL; В_СУММА NUMBER : =0; ссылочные, LOB (большие объекты), а также прочие К_ЛИМИТ CONSTANT переменные (не PL/SQL) - связанные переменные и хост- NUMBER: =10000; переменные. Инициализация переменных PL/SQL и констант происходит всякий раз при входе в блок. По умолчанию переменные принимают неопределенное значение NULL. Переменные, не имеющие стандартного начального значения можно инициализировать с использованием знака присваивания ": =". Если переменная имеет ограничение NOT NULL - присвоить неопределенное значение такой переменной невозможно. Для объявления переменной можно использовать атрибут %TYPE, указывая при этом: столбец таблицы базы данных уже объявленную переменную Конструкция %TYPE используется для того, чтобы избежать жесткого кодирования типа данных переменной и его точности. Использование этой конструкции предоставляет определенное преимущество при написании и сопровождении кода, поскольку PL/SQL определяет тип данных переменной в момент компиляции. ВАЖНО! Ограничение NOT NULL, применяемое к столбцам таблиц, не распространятся на переменные, объявленные на их основе с помощью %TYPE. Пример использования %TYPE. В_ДАТА_ПРИЕМА ПРОДАВЦЫ. ДАТА_ПРИЕМА%TYPE; В_СУММА NUMBER(9. 2); В_ПЛАН В_СУММА%TYPE : =0;
СКАЛЯРНЫЕ И СОСТАВНЫЕ ТИПЫ ДАННЫХ Основные скалярные типы данных: VARCHAR 2(макс. длина), NUMBER[(длина, знаков после запятой)], DATE, CHAR(макс. длина), BOOLEAN, PLS_INTEGER Составные типы данных: PL/SQL RECORD (запись) Обращение к записи осуществляется по имени переменной, объявленной с типом "запись". Обращение к полям записи осуществляется посредством точечной нотации. Пример присвоение полю "НАИМЕНОВАНИЕ" значения: В_ТОВАР. НАИМЕНОВАНИЕ : = ‘Мяч’; Запись может быть объявлена на основе совокупности столбцов таблицы или представления базы данных с использование атрибута %ROWTYPE. При этом поля записи наследуют названия и типы данных столбцов таблицы, что удобно при работе с данными. DECLARE TYPE ТОВАР_ТИП IS RECORD (ИЗГОТОВИТЕЛЬ VARCHAR 2(3), ШИФР VARCHAR 2(3), НАИМЕНОВАНИЕ VARCHAR 2(30), ЦЕНА NUMBER(9, 2), ЛИМИТ NUMBER(6, 0) : = 10); DECLARE В_ТОВАРЫ%ROWTYPE; PL/SQL TABLE (таблица) - это тип данных, который подобен таблицам базы данных, но имеющий ряд ограничений. Таблица PL/SQL должна содержать два компонента: 1. Главный ключ типа BINARY_INTEGER, по которому индексируется таблица PL/SQL. 2. Столбец скалярного типа данных или типа RECORD. Таблица PL/SQL подобна массиву, но может динамически увеличиваться ввиду отсутствия ограничений. DECLARE TYPE ТАБЛИЦА_ТОВАРОВ_ТИП IS TABLE OF VARCHAR 2(30) INDEX BY BINARY_INTEGER; В_ТОВАРЫ ТАБЛИЦА_ТОВАРОВ_ТИП; BEGIN В_ТОВАРЫ(1) : = 'Плитка облицовочная'
ОПЕРАТОРЫ ВЕТВЛЕНИЯ - 1 форма: IF condition THEN sequence_of_statements; END IF; IF - 2 форма: IF condition THEN sequence_of_statements 1; ELSE sequence_of_statements 2; END IF; IF - 3 форма: IF condition 1 THEN sequence_of_statements 1; ELSIF condition 2 THEN sequence_of_statements 2; - Ключевое слово ELSIF - может повторяться многократно ELSIF condition 3 THEN sequence_of_statements 3; ELSE sequence_of_statements 4; END IF; IF - Ключевое слово ELSE может отсутствовать
ОПЕРАТОРЫ ЦИКЛА Язык PL/SQL реализует три формы операторов цикла, которые могут иметь следующее формальное описание: - 1 форма - выход из цикла должен быть указан оператором выхода: LOOP sequence_of_statements; END LOOP; LOOP sequence_of_statements; EXIT WHEN boolean_expression; Оператор выхода из цикла END LOOP; <<label_of_loop>> - Метка цикла LOOP sequence_of_statements; END LOOP label_of_loop; - Конец помеченного цикла - 2 форма - цикл выполняется, пока условие истинно: WHILE condition LOOP sequence_of_statements; END LOOP; - 3 форма - цикл выполняется заданное число раз: FOR counter IN [REVERSE] lower_bound. . higher_bound LOOP sequence_of_statements; END LOOP; Для выхода из цикла используются операторы EXIT и EXIT-WHEN, а для выхода из блока PL/SQL - оператор RETURN.
СОЗДАДИМ ПРОСТОЙ НЕИМЕНОВАННЫЙ БЛОК Откройте окно вывода DBMS_OUTPUT через меню «View» , для вывода результатов Создайте неименованный блок, выполняющий операции вашего задания Дополнительная информация о специальных символах находится в конце презентации
Типы специальных символов PL/SQL: 1. Арифметические операторы: 2. Операторы отношения (используются в логических выражениях): 3. Выражение и списки (используются в операторах, объявлениях типов данных, объявлениях списков параметров, ссылках на переменные и таблицы): 4. Комментарии и метки = Равенство Вычитание и унарный минус < Меньше * Умножение > Больше / Деление <> Не равно ** Возведение в степень != Не равно (альтернатива) 3 ~= Не равно (альтернатива) ^= Не равно (альтернатива) <= Меньше или равно >= Больше или равно + Сложение и унарный плюс - 1 : = ( ) Присвоение Начало списка или подвыражения Конец списка или подвыражения , Отдельные элементы списка (как в списке параметров) . . Оператор диапазона используется в операторах FOR-IN || Конкатенация строк => Ассоциация (используется в списке параметров) ; %. @ ' : & Конец выражения Атрибут курсора или типа объекта Спецификация объекта Индикатор удаленной базы данных Начало/конец строки символов Индикатор внешней переменной Индикатор связанной переменной 2 4 -- Комментарий в одной строке /* Начало многострочного комментария */ Конец многострочного комментария >> Начало метки << Конец метки
Для работы с таблицами PL/SQL имеются процедуры и функции: Метод. Описание EXISTS(n) Возвращает "истинно", если n-й элемент в таблице существует. COUNT Возвращает текущее количество элементов в таблице FIRST LAST Возвращает первый и последний номера индексов в таблице. В случае если таблица пуста возвращается NULL. PRIOR(n) Возвращает индекс, предшествующий индексу n в таблице PL/SQL. NEXT(n) Возвращает индекс, следующий за индексом n в таблице PL/SQL. EXTEND(n, j) С помощью этого метода в таблицу добавляется следующее: EXTEND добавляет 1 элемент со значением NULL. EXTEND(n) добавляет n элементов со значением NULL. EXTEND(n, j) добавляет n копий j-го элемента. TRIM Удаляет один элемент с конца таблицы. TRIM(n) удаляет n элементов. DELETE удаляет из таблицы все элементы. DELETE(n) удаляет из таблицы PL/SQL n-ый элемент. DELETE(n, m) удаляет из таблицы все элементы в диапазоне n. . m.
Lab 9 PLSQL Основы языка.ppt