Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 256; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.) |