PL/SQL Программная конструкция ОписаниеСреда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно.

Презентация:



Advertisements
Похожие презентации
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Advertisements

PL/SQL Курсоры в PL/SQL Неявные курсоры создаются PL/SQL неявно для всех команд DML и SELECT. Явные курсоры объявляются программистом, который присваивает.
PL/SQL Введение 1. Типы данных Типы доступные SQL (в Oracle) BOOLEAN CHAR NUMBER RECORD TABLE.
Обработка исключений Гудов А.М., Завозкин С.Ю
Динамический SQL (использование в Oracle). Виды предложений SQL МетодТип предложенияТребуемые вызовы пакета DBMS_SQL 1 Незапросные, нет базовых переменных,
PL/SQL Триггер блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие.
Обработка ошибок. Общие сведения Что такое исключение? –Переменная в PL/SQL, возбуждаемая во время выполнения Как возникает исключение? –Возбуждается.
Обработка запросов с использованием курсоров. Что такое курсор? Каждая команда SQL, выполняемая на сервере Oracle, имеет свой курсор. Два типа курсоров:
Множества. Множество- ограниченный, неупорядоченный набор различных элементов одного типа. Примеры множеств: Множество арабских цифр. Множество знаков.
МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ. Программная единица PL/SQL Именованные блоки Три основных категории Процедура Функция Пакет Хранятся в базе данных или обрабатываются.
РАЗРАБОТКА ПРОСТОГО БЛОКА. Структура простого блока DECLARE BEGIN EXCEPTION END;
УПРАВЛЕНИЕ ПОТОКОМ В БЛОКАХ PL/SQL. Управление потоком операций в PL/SQL Логический поток операций можно изменять с помощью управляющих структур: Структуры.
Познакомиться с основными понятиями языка Pascal 2.
Pascal 1 Основы языка Паскаль Информатика и ИКТ Смирнов М.В. МКО ООШ п. Климковка Белохолуницкого района Кировской области.
Основы языка PL/SQL Управляющие конструкции Границы моего языка означают границы моего мира. Людвиг Виттгенштейн.
PL/SQL Взаимодействие с СУБД. Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
Переменная l. Определение Переменная - именованное место в памяти, в котором можно хранить некоторое значение.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Презентация на тему: Ключевое слово TOP n [PERCENT] [WITH TIES]
Транксрипт:

PL/SQL

Программная конструкция Описание Среда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно. Сервер Oracle, клиентская часть Хранимая процедура или функция Именованный блок PL/SQL, хранящийся на сервере, может принимать параметры и многократно вызываться по имени. Сервер Oracle, клиентская часть Пакет Именованный модуль PL/SQL, объединяющий воедино взаимосвязанные процедуры, функции. Состоит из спецификации и тела пакета. Сервер Oracle, клиентская часть Триггер базы данных Блок PL/SQL, связанный с таблицей БД и выполняемый автоматически, когда над этой таблицей выполняется операции DML. Сервер Oracle

Структура блока PL/SQL: DECLARE - необязательно Константы, переменные, типы, курсоры, пользовательские исключения BEGIN - обязательно Команды SQL Команды PL/SQL EXCEPTION - необязательно Действия при возникновении ошибки END; - обязательно

Секция объявлений DECLARE v_date_time TIMESTAMP; ….

Секция исключительных ситуаций EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(sqlerrm); End;

Минимальный блок pl/sql Begin NULL; End;

Простой пример DECLARE В_NAME VARCHAR2(100); BEGIN SELECT NAME INTO В_NAME FROM SALERS WHERE ID=106; dbms_output.put_line('Фамилия продавца: '||В_NAME); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Произошла ошибка!'); END;

Типы блоков Анонимные блоки Процедуры Функции

Типы переменных Переменные PL/SQL Скалярные Составные Ссылочные LOB (большие объекты) Прочие переменные (не PL/SQL) Связанные переменные и хост-переменные

Основные скалярные типы данных Тип Описание Числовые NUMBER [(точность, масштаб)] Числа с точность и масштабом. Точность в диапазоне от 1 до 38, а масштаб – от -84 до 127 BINARY_INTEGERОсновной тип для целых числе от до PLS_INTEGERОсновной тип для целых числе со знаком до Символьные CHAR [ (Максимальная_Длина)] Основной тип для символьных данных постоянной длины до байтов. VARCHAR2 (Максимальная_Длина) Основной тип для символьных данных переменной длины 4Gb.

Основные скалярные типы данных Тип Описание Даты DATE Основной тип для дат и времени. Значение DATE включают время в секундах с полуночи. Дипозон дат: 4712 г. До.н.э – 9999 н.э. TIMESTAMP [(точность)] Расширяет тип данных DATE и хранит год, месяц, день, час, минуту, секунду и доли секунды. Логические BOOLEAN Основной тип для хранения значений, используемых в логических вычислениях: True (истинно), False(ложно) или NULL (не определено).

Требование к переменным должны начинаться с буквы могут включать буквы и цифры могут включать специальные символы, например, знак доллара ($), символы подчеркивания (_) и решетки (#) максимальная длина – 30 символов не могут быть зарезервированными словами. identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];

Ключевые слова Select keyword, length From v_$reserved_words Where (length>1 or keyword = A) And keyword != < Order by keyword

Переменные инициализируются всякий раз при входе в блок. По умолчанию переменные принимают неопределенное значение NULL. Переменную можно инициализировать в декларативной секции, в том числе и с использованием ключевого слова DEFAULT. Переменные, не имеющие стандартного начального значения можно инициализировать с использованием знака присваивания ":=". Если переменная имеет ограничение NOT NULL - присвоить неопределенное значение такой переменной невозможно.

Примеры объявления переменных. DECLARE В_START_DATE DATE; В_NAME VARCHAR2(100) NOT NULL; В_SUM NUMBER :=0; К_LIMIT CONSTANT NUMBER:=10000;

Атрибут %TYPE Атрибут %TYPE позволяет объявлять переменную типа, соответствующего: типу другой переменной; типу столбца базы данных. Например: var1 REAL(14,2); var2 var1%TYPE; - Переменная var2 будет иметь тип как var1 var_f1 user1.tbl1.f1%TYPE; - Переменная var_f1 будет иметь тот же тип, что и поле f1 таблицы tbl1 пользователя user1

Атрибут %ROWTYPE Атрибут %ROWTYPE позволяет объявлять переменную типа "запись", соответствующую строке таблицы. Переменная такого типа имеет поля, совпадающие с полями таблицы по имени и типу. DECLARE tbl1_rec1 tbl1%ROWTYPE; - Для строки из таблицы tbl1 tbl1_rec2 tbl1%ROWTYPE; CURSOR c1 IS SELECT * FROM tbl1; emp_rec2 c1%ROWTYPE; - Для строки курсора с 1, - созданного из таблицы tbl1 emp_rec3 с 1%ROWTYPE; BEGIN SELECT * INTO tbl1_rec1 FROM tbl1 WHERE tbl1.f1=1; emp_rec2 := emp_rec1; - Присвоение значения всем полям записи END

Составные типы данных PL/SQL RECORD (запись) PL/SQL TABLE (таблица) Nested TABLE (вложенная таблица) VARRAY (массив переменной длины)

Записи PL/SQL TYPE type_name IS RECORD ( field_name1 {field_type | variable%TYPE | table.column%TYPE | table%ROWTYPE} [NOT NULL], field_name2 {field_type | variable%TYPE | table.column%TYPE | table%ROWTYPE} [NOT NULL],...);

Таблицы PL/SQL Тип данных, который подобен таблицам базы данных. Таблица PL/SQL должна содержать два компонента: Главный ключ типа BINARY_INTEGER, по которому индексируется таблица PL/SQL. Столбец скалярного типа данных или типа RECORD. TYPE type_name IS TABLE OF { column_type | variable%TYPE | table.column%TYPE } [NOT NULL] INDEX BY BINARY_INTEGER;

Процедуры и функции для работы с таблицами 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 удаляет из таблицы все элементы. DELETE(n) удаляет из таблицы PL/SQL n-ый элемент. DELETE(n,m) удаляет из таблицы все элементы в диапазоне n..m.

Связанная переменная переменная, которая объявляется во внешней среде, а затем используется для динамической передачи параметра в программу PL/SQL. :BV_Car := Audi;

Работа с данными в PL/SQL Для извлечения данных из БД и их изменения (DML) используются команды SQL. Управление транзакциями также осуществляется при помощи команд SQL - COMMIT и ROLLBACK. Команды DDL и DCL явным образом использовать в PL/SQL нельзя. Для этой цели можно воспользоваться возможностями встроенного пакета DBMS_SQL.

Выборка строк данных SELECT список_полей INTO список_переменных FROM список_таблиц WHERE условие;

DECLARE В_NAME VARCHAR2(100); BEGIN SELECT NAME INTO В_NAME FROM SALERS WHERE ID=5.. В_NAME:='Продавец '||В_NAME||' имеет идентификатор 5'.. END;

Изменение данных в PL/SQL BEGIN INSERT INTO CARS VALUES (AUDI', A2', Cерая', );.. END; Пример вставки данных в PL/SQL BEGIN DELETE FROM SALERS WHERE ID=200;.. END; Пример удаления данных в PL/SQL

Операторы ветвления IF условие THEN выражения; [ELSIF условие THEN выражения;] [ELSE выражения;] END IF;

Циклы простой цикл цикл FOR цикл WHILE

Простой цикл LOOP Команда 1;.. EXIT [WHEN условие];.. END LOOP;

Цикл FOR FOR имя_счетчика IN верхняя_граница..нижняя_граница LOOP Команда 1; Команда 2;.. END LOOP;

Цикл WHILE WHILE условие LOOP Команда 1; Команда 2;.. END LOOP;

Курсоры Курсор – это средство извлечения данных из базы данных Oracle. Курсоры содержат определения столбцов и объектов (таблиц, представлений и т.п.) из которых будут извлекаться данные, а также набор критериев, определяющих какие именно строки должны быть выбраны

Неявные курсоры - простой оператор SELECT... INTO извлекает одну строку данных непосредственно в переменные локальной программы. Явные курсоры - вы можете явно объявить курсов в разделе объявлений (локального блока или пакета). Курсорные переменные - дополнительный уровень гибкости обеспечивают курсорные переменные (объявленные на основе типа REF CURSOR), которые позволяют передавать указатель на результирующее множество, полученное по запросу. Курсорные выражения - выражения CURSOR преобразуют оператор SELECT в указатель (типа REF CURSOR) на результирующее множество и могут использоваться в сочетании с табличными функциями для повышения производительности приложений.

Неявные курсоры создается всякий раз, когда в PL/SQL выполняется запрос, Oracle присваивает ему системное имя SQL%ROWCOUNT Количество строк, выбранных или измененных последней командой SQL SQL%FOUND Логический атрибут, возвращающий значение "истинно", если последняя команда SQL обработала одну или несколько строк. SQL%NOTFOUND Логический атрибут, возвращающий значение "истинно", если последняя команда SQL не обработала ни одной строки. SQL%ISOPEN Всегда возвращает значение "ложно", т.к. PL/SQL закрывает неявные курсоры сразу после выполнения. Атрибуты, которые можно применять для неявного курсора для определения результатов выполнения команды SQL: