- •12.1. Специальные аспекты работы с бд. Процедура индексирования.
- •12.2. Триггеры
- •12.2.1. Ключевые слова и параметры
- •12.2.2. Компоненты триггера
- •12.2.3.Типы триггеров.
- •12.2.4.Включение и выключение триггеров.
- •C.12.2.5. Удаление триггера
- •C.12.2.6. Корреляционные имена
- •12.3. Процедуры и функции
- •12.4. Функция
- •12.5.Курсоры.
- •14.1. Системы обработки транзакций oltp и olap - технологий
- •14.2. Хранилища данных. Многомерные хранилища данных
- •14.3. Методы аналитической обработки (olap)
- •14.3.1. Хранилища данных
- •14.3.2. Причины внедрения информационных систем на основе хранилищ данных
- •Литература
- •14.5. Olap в России
- •Тема 15. Основы фракталов. Фрактальная математика. Фрактальные методы в архивации. Управления складами данных
- •15.1. Понятие "фрактал"
- •15.2. Классификация фракталов
- •15.2.1. Геометрические фракталы
- •15.2.2. Алгебраические фракталы
- •C.15.2.3. Стохастические фракталы
- •C.15.3. Системы итерируемых функций
- •15.4. Фрактальное сжатие
- •15.5. История фрактального сжатия
- •15.6. Идея фрактальной архивации
- •15.7. Сравнение с jpeg
12.5.Курсоры.
В ответ на запросы пользователя SQL может возвращать многие сотни тысяч сторон, общим объемом в 10 Мбайт. В системе не каждый может иметь достаточный объем памяти и обработать их.
Кроме того, обычно клиент работает с небольшой частью данных в определенный момент времени, например с одной строкой, а не со всем набором строк.
Т.е. клиенту не нужен одновременно весь набор данных, и для него предпочтительно получать данные порциями.
Механизмом, обеспечивающим хранение результата выборки и представляют пользователю возможность доступа к любой строке выборки по ее номеру, являются курсоры.
Пользователь может работать в каждый момент времени только с одной строкой и курсор является своего рода окном, накладываемым на результат выборки. Перемещая окно, пользователь может не иметь доступ к любой строке выборки.
Для обработки SQL оператора Oracle выделяет атлас памяти, называемый контекстной областью. Она содержит информацию, необходимую для завершения обработки:
1. число строк, обработанных оператором
2. указатель на представление этого оператора
3. активный набор (набор строк, возвращение запросом).
Курсор - это указатель на контекстную область, с помощью которого PL SQL может управляться контекстной областью и ее состоянием во время обработки оператора.
Курсор - разновидность файла, которая создается во время.
Это средство погруженного SQL хранения результатов для дальнейшей обработки.
Для использования курсоров надо:
1. объявить курсор
2. открыть курсор для запроса
3. выбрать результаты в переменные PL SQL
4. закрыть курсор
1.Объявление курсора.
При объявлении курсора ему назначается имя и ставится в соответствие некоторой Select.
Cursor имя курсора IS оператор Select
Курсор должен быть объявлен (описан) до того, как на него будет произведена ссылка в нем, можно использовать любые оператор Select, в том числе соединение (joins), объединение (union), вычитание (minus).
Все переменные, которые используются в курсоре, должны быть ему видимы, т.е. они должны быть объявлены до их использования в курсоре.
Declare
V - probeg cena √ avto. probeg % type;
V - cena cena √ avto. Ceno % type;
Объявление курсора : cursor c √ cena is
Select from cena √ avto where cena = v √ cena;
Begin
V √ cena: = 2000;
Open c √ cena;
End.
2. Открытие курсора.
Open - имя курсора.
Позволяет СУБД обработать запрос курсора и записать результат в ╚курсор╩.
При открытии курсора происходит:
1. анализируется значения переменных привязки
2. на основе значений переменных привязывается определенный активный набор (т.е. набор строк, возвращаемый запросом)
3. указатель активный: наборы устанавливаются на одну строку.
Чтобы переменным привязки присвоить новые значения и курсор, работая с ними надо курсор закрыть, присвоить переменной привязки новые значения и снова открыть курсор.
3. Выбрать данные для обработки (считывание строк из курсора).
FETCH - имя курсора INTO √ список переменных
FETCH имя курсора INTO запись PL/SQL
С помощью оператора FETCH считывается 1 строка из курсора. Тип переменной курсора должен соответствовать переменной выбора запроса.
В случае если считывание идет в запись PL/SQL, то переменная типа запись объявляется
V √ cur cena √ avto % ROWTYPE
4. Закрытие курсора.
Close имя курсора. Закрытие курсора производят после того как выбран весь активный набор. При этом все отведенные ресурсы для курсора освобождают (пространство для хранения активного набора и временное пространство, используемое для определения такого набора).
Курсорные атрибуты.
Добавляются к имени курсора в блоке PL/SQL подобно атрибутам % type и % nowtype.
1. % found √ возвращает значение TRUE если строка была выбрана RALSE если не выбрана строка.
2. % notfound √ противоположно % found
3. % open используется для определения открыт или нет соответствующий курсор. Если открыт - TRUE , иначе √ FALSE.
4. % ROWCOUNT √ возвращает число строк, считанных курсором.
Циклы выборки.
Чаще всего курсоры используются для считывания всех строк активного набора с помощью циклов.
Примеры:
Для работы с курсором, триггером, процедурами необходимо установить привилегии.
Установка привилегий:
1. войти в ORACLE под именем SUSTEM пароль MANAGER
2. ввести следующую запись:
SQL grant all privileges to scott
3. зайти в SQL под именем scott
Пример:
Declare
V √ name cena_avto name % TYPE
V √ cena cena_avto cena % type
V √ probeg cena_avto probeg % type
V √ aod cena_avto god % type
/ *объявляем курсор*/
cursor curmy is
select name, probeg, cena, god from cena_avto
Where god between 1991 and 12000
Begin
Open curmy
Loop
/ *считываем информацию о машине* /
fetch aurmy into v_name v_cena v_probeg v_god;
(выйдем из цикла, когда строк для выбора больше нет)
exit when cuemy % NOFFOUND
(обработали считанные строки)
insert into table (name, probeg, cena, god)
values (v_name, v_probeg, v_ceno, v-god)
End loop;
(освободить ресурсы, используемые курсор)
close curmy
(завершим работу)
commit
End.
Пример больница:
Пациент, его атрибуты
Врачи, карточка
Create table Pazient
( FIO varchar 2 (30)
Vozrast char (20)
N polis char (20)
Address varchar 2 (30)
N kart char (20) not null
N uch char (20 not null)
Primary ney (N kart N uch))
Create table Vrach
( FIO vrach varchar 2 (30)
spezialnost char (30)
N vracha char (20) not null
Primary ney (N vrach))
Create table kartochka
( data char (20)
shialoba varchar 2 (2000)
diagnoz varchar 2 (2000)
lechenie varchar 2 (2000)
povt priem char (20)
N ZAP char (20) not null
N kart char (20)
N uch char (20)
Primary key (N ZAP)
Foreing key (N kart N uch)
Pacient (N kart N uch))
Create table uslugi
Name varchar 2 (500) not null
Cena char (10)
N vracha char (20)
N ZAP char (20)
Brimary rey (name)
Forein key (N ZAP)
Create table vizov vracha
N vrach char (20)
N ZAP char (20)
Foreing key (N vrach)
Расписание и начисление заработной платы.
Crate procedure
V_vrach (nvr in char npo in char) is begin
Declare
Cursor cur2 is select vrach. Kartochka n ZAP from vrach pacient kartochka where nach fio vrach = nvr and pacient n polis = npo and kartochka nuch = pacient nuch
(объявляем курсорную переменную)
cur2 VIZOV VRACH % type
begin
open cur2
fetch cur2 into
cur2
insert into VIZOV VRACH
values (cur2-r n vrach cur2_r nZAP )
close cur2
end
end
/
execute v_vrach (IVANOV)
selest * from VIZOV_ VRACHA
Тема 14. Ограничения целостности. Технология оперативной обработки транзакций (OLTP -технология). Информационные хранилища. OLAP - технология. Проблема создания и сжатия больших информационных массивов, информационных хранилищ и складов данных.
Лекции: 2 часа
В 60х гг. появились АИС предназначенные для хранения и обработки информации. По мере интеллектуализации АИС появилась возможность обработки текстовых документов на естественном языке (изображения и другие виды и формы представления данных).
Принципы хранения данных в системе обработки фактической и документальной информации схожи, но алгоритмы их обработки различаются. Таким образом выделяют 2 крупных класса информационных систем:
- Документальные
- Фактографические
Документальные системы служат для работы с документами на естественном языке, это монографии, публикации, сообщения, различные тексты. Они обеспечивают их смысловой анализ при неполном представлении смысла. Наиболее распространенный тип документальных систем - это информационно поисковые системы (ИПС), предназначенные для накопления, поиска по разным критериям документов на естественном языке.
Другой большой класс - фактографические системы, они оперируют фактическими сведениями, представлены специальным образом в виде организованных совокупностей формализованных записей данных. Фактографические системы используются не только для реализации справочных функций, но и для решения задач обработки данных и предоставление итоговых данных пользователям в табличной форме.