Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Присваивание переменным значений базы данныхСодержание книги
Поиск на нашем сайте
В зависимости от числа возвращаемых запросом строк используются два метода.
SELECT … INTO … - когда возвращается 1 строка
BEGIN SELECT id, customerid, orderdate INTO currentorder.id, currentorder.customerid, currentorder.orderdate FROM orders WHERE id=453; Если по запросу возвращаются несколько строк, нужно воспользоваться курсором. Курсор - это имя многострочного запроса или указатель на контекстную область, с помощью которого программа PL/SQL управляет этой областью и ее состоянием во время обработки. При объявлении курсора ему назначается имя и ставится в соответствие некоторый оператор SELECT. оператор_select - запрос, который будет обрабатываться.
Открытие курсора для запроса Синтаксис открытия курсора таков: Выбор результатов в переменные PL/SQL Производится считывание строк из курсора. Оператор FETCH имеет две формы: список_переменных - представляет собой список объявленных переменных PL/SQL, разделенных запятыми, запись_ PL/SQL - предварительно объявленная запись PL/SQL. Закрытие курсора Когда выбран весь активный набор, курсор следует закрыть и освободить отведенные для него ресурсы. Неявно объявляемые курсоры
Примеры: CURSOR ordercursor IS select id, customerid, orderdate from orders;
DECLARE CURSOR ordercursor (ordernumber NUMBER) IS SELECT id, customerid, orderdate FROM orders WHERE id > ordernumber; BEGIN OPEN ordercursor (3) В данном примере возвращаемый набор ordercursor включает строки таблицы orders, для которых идентификатор id > 3
Атрибуты курсора: %ISOPEN - открыт курсор (true, false) %ROWCOUNT - число строк, выбранных после открытия курсора %NOTFOUND - последняя команда выборки возвратила строку, то %FOUND (%NOTFOUND – false, %FOUND – true) и наоборот
8. Процедуры, функции, пакеты. Процедуры Процедуры (или хранимые процедуры) – это определенный набор инструкций, написанных на языке PL/SQL, и операторов DML. Вызов процедуры приводит к выполнению содержащихся в ней инструкций. Процедура хранится в базе данных, поэтому она и называется хранимой. Процедура – это именованный блок PL/SQL, то есть секция заголовка непустая. Секция заголовка называется еще спецификацией процедуры (procedure specification). Спецификация процедуры включает в себя имя процедуры и описание ее входных и выходных данных. После спецификации идет секция объявления, если это необходимо, выполняемая секция (или тело процедуры) и секция исключений (опять же необязательная). Создание процедуры аргумент - имя параметра процедуры, тип - это тип соответствующего параметра, тело_ процедуры - блок PL/SQL Между именем входного параметра и его типом можно указывать два специальных слова – IN и/или OUT. Указание IN будет означать, что в данной переменной процедуре было передано входное значение. Указание OUT означает, то эту переменную можно использовать для возврата какого-то значения. Можно также указывать одновременно IN и OUT. Если ничего не указано, то подразумевается IN.
Для изменения текста процедуры необходимо удалить и повторно создать ее, поэтому ключевые слова OR REPLACE (или заменить) позволяют выполнить такую операцию за один раз.
Тело (body) процедуры - это блок PL/SQL, содержащий раздел объявлений, выполняемый раздел и раздел исключительных ситуаций. CREATE OR REPLACE PROCEDURE имя_процедуры AS
Значения параметров по умолчанию вид - вид параметра (IN, OUT или INOUT), исходное_значение - значение, присваиваемое формальному параметру по умолчанию. Можно применять:= или ключевое слово DEFAULT.
CREATE PROCEDURE deletecustomer (custid IN INTEGER) AS last VARCHAR2(50); first VARCHAR2(50); BEGIN SELECT lastname, firstname INTO last, first FROM customer WHERE id=custid; INSERT INTO customerhistory VALUES (custid, last, first) DELETE FROM customer WHERE id=custid; EXCEPTION WHEN no_data_found THEN RAISE_APPLICATION_ERROR (-20123, ‘invalid Customer ID’) END deletecustomer;
Функции Функции очень похожи на процедуры. Как функции, так и процедуры можно хранить в базе данных или описывать в блоке. Однако вызов процедуры сам по себе является оператором PL/SQL, в то время как вызов функции - это часть некоторого выражения. Функции отличаются от процедур тем, что возвращают какое-то значение и вызываются только из других предложений SQL. Синтаксически это отличие отражено cпецификации функции. В остальном, функция создается по тем же правилам, что и процедура. Функция – это оператор ORACLE SQL, который может принимать один или несколько параметров и результат выполнения которого может быть подставлен в выражение. В частности, функции могут изменять внешнее представление данных (например, переводить дату в соответствующий день недели), выполнять их статистическую обработку или изменять содержание. Все функции делятся на две большие группы: однострочные и групповые. Однострочные функции выполняют операции, которые могут повлиять на каждую строку таблицы в отдельности. В отличие от них групповые функции предназначены для получения агрегированной информации о некоторых подмножествах данных. Синтаксис для создания хранимой функции: аргумент и тип аналогичны при создании процедуры; возвращаемый_тип - это тип значения, возвращаемого функцией; тело_функции - блок PL/SQL Как и для процедур, список аргументов необязателен. Оператор RETURN
где выражение - это возвращаемое значение. При выполнении оператора RETURN управление программой сразу же возвращается в вызывающую среду. Удаление функций
CREATE FUNCTION findcustid (last IN VARCHAR2, first IN VARCHAR2) RETURN INTEGER AS custid INTEGER; BEGIN SELECT id INTO custid FROM customer WHERE lastname=last AND firstname=first; RETURN custid; EXCEPTION WHEN no_data_found THEN RAISE_APPLICATION_ERROR (-20101, ‘invalid Customer ID’) END findcustid; Пакеты Пакет - это конструкция PL/SQL, позволяющая хранить связанные объекты в одном месте. Преимущества пакета: -облегчает процесс разработки; - дополнительная функциональность (глобальные переменные); - повышает производительность системы. Пакет состоит из двух различных частей: описания и тела, каждая из которых хранится по отдельности в словаре данных. В пакет могут входить: процедуры, функции, курсоры, типы и переменные.
CREATE OR REPLACE PACKAGE customermanager IS PROCEDURE newcustomer (company IN VARCHAR2 DEFAULT null, last IN VARCHAR2, first IN VARCHAR2, …); FUNCTION findcustid (last IN VARCHAR2, first IN VARCHAR2) RETURN INTEGER; PROCEDURE updatecustomer (custid IN INTEGER, fieldtype IN CHAR, newvalue IN VARCHAR2); PROCEDURE deletecustomer (custid IN INTEGER); PROCEDURE deletecustomer (last IN VARCHAR2, first IN VARCHAR2); END customermanager;
CREATE OR REPLACE PACKAGE BODY customermanager AS …. END customermanager; 9. Триггеры, их основные свойства и значение. Триггеры так же, как процедуры и функции, являются именованными блоками PL/SQL с разделом объявлений, выполняемым разделом и разделом исключительных ситуаций. Триггер выполняется, когда происходит событие, запускающее этот триггер (операторы INSERT, UPDATE или DELETE). - Реализации сложных ограничений целостности данных, которые невозможно осуществить через описательные ограничения; - Слежения за информацией, хранимой в таблице, путем записи вносимых изменений и пользователей, вносящих эти изменения
Элементы триггера Ограничения для строчного триггера FOR EACH ROW WHEN (new.onhand < new.reorder) Условные предикаты INSERTING, UPDATING, DELETING Ограничения, налагаемые на триггеры Использование:old и:new в строковых триггерах Пример:
CREATE TRIGGER deletecustomer BEFORE DELETE ON customer FOR EACH ROW BEGIN INSERT INTO customerhistory VALUES (:old.id,:old.lastname,:old.firstname); END deletecustomer;
10. Параллельные архитектуры БД; масштабируемость, надежность, производительность. Три основные архитектурные направления: · Симметричные многопроцессорные системы (SMP) - форма сильносвязанных многопроцессорных систем, разделяющих единую оперативную память и дисковую подсистему; · Слабосвязанные многопроцессорные системы (кластеры) - совокупность компьютеров, объединенных в единую систему быстродействующей сетью и имеющих общую дисковую подсистему; · Системы с массовым параллелизмом (MPP) - системы с сотнями и даже тысячами процессоров, имеющие многоуровневую структуру оперативной памяти
Группы требований, определяющих качества современной СУБД: · масштабируемость; · производительность; · возможность смешанной загрузки разными типами задач; · обеспечение постоянной доступности данных (надежность или катастрофоустойчивость). Масштабируемость - свойство вычислительной системы обеспечивать предсказуемый рост системных характеристик (число поддерживаемых пользователей, быстроты реакции, общей производительности) при добавлении к ней вычислительных ресурсов. Факторы, влияющие на производительность СУБД: · поддержка параллелизма (параллельный ввод/вывод, параллельные средства и утилиты администрирования, параллельная обработка запросов к базе данных) · реализация многопотоковой архитектуры
|
||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 191; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.224.116 (0.009 с.) |