- •Работа транзакций в смеси
- •Проблема параллельной работы транзакций
- •Блокировки
- •Разрешение тупиковых ситуаций.
- •Предикатные блокировки
- •Метод временных меток
- •Механизм выделения версий данных
- •Теория Есварана
- •Протокол двухфазной блокировки
- •Реализация изолированности транзакций средствами языка SQL
- •Транзакции и восстановление данных
- •Виды восстановления данных
- •Индивидуальный откат транзакций
- •Восстановление после мягкого сбоя
- •Восстановление после жесткого сбоя
- •Представление знаний в интеллектуальных системах.
- •Данные и знания. Основные определения
- •Модели представления знаний
- •Способы описания.
- •Стратегии решения организации поиска
- •Логический подход. Представление простых фактов в логических системах
- •Типовая организация СУБД. Внутренняя организация реляционной СУБД
- •Внутренняя организация реляционной СУБД.
- •Хэширование
- •Журнальная информация
- •Служебная информация
- •Язык SQL. Функции и основные возможности
- •Определение ограничения целостности и тригеров
- •Представление БД
- •Определение управляющих структур
- •Авторизация доступа к отношениям и их полям
- •Точки сохранения и отката транзакций. Встроенный SQL
- •Динамический SQL
- •Определение представлений.
- •Определение привилегий.
- •Средства манипулирования данными.
- •Табличные выражения.
- •Использование SQL при прикладном программировании.
- •Встроенный SQL
- •Одиночные операторы манипулирования данных.
- •Некоторые черты SQL’92 и SQL–3 (SQL’99)
38
Некоторые черты SQL’92 и SQL–3 (SQL’99)
Динамическое SQL – в SQL’92
Оператор выделения памяти под дескриптор.
<allocate descriptor statement>::=ALLOCATE DESCRIPTOR <descriptor name>[WITH MAX <occurrences>] (occurrences)
<descriptor name>::=[GLOBAL | LOCAL] <name>
Дескриптор –динамическая часть прикладной программы, служащая для принятия информации о результате параметрах динамически подготовленного оператора SQL, а так же задание параметров этого оператора.
Для выделения памяти используется оператор SQL, т.к. прикладная программа не знает ни структуру будущего дескриптора, ни его адреса, и обмен информацией м\у прикладной программой и дескриптором происходит через специальные спецификаторы дескрипторов GET и SET. Имя дескрипторов задаётся литеральной строкой символов. В качестве имени может использоваться переменная включающего языка. В ней указывается максимальное количество описательных элементов(это задаётся в необязательном разделе [MAX<occurrences>])
Освобождение памяти от дескриптора.
DEALLOCATE DESCRIPTOR <descriptor name>
Происходит освобождение памяти под дескриптором. При этом указание имени дескриптора”незаконно” в любом другом операторе кроме этого.
Оператор получает информацию из области дескриптора. <get descriptor statement>::=
GET DESCRIPTOR <descr. name> <get descr. info>
<get descr. info>::=<get count> (VALUE <item number> <get item info> {,<get inem info}>)
<get item info>::=TYPE (LENGTH (OCTET_LENGHT (RETURNED_LENGHT (PRECISION
(SCALE
(DATA
(NAME
GET_DESCRIPTOR – для выборки описательной информации, размещенной в дескрипторе при помощи оператора describe. Заодно выполнение оператора Get
39
Descriptor можно получить либо число заполненных элементов дескриптора (COUNT), либо информацию, содержащуюся в одном заполненном элементе. Аналогично существует оператор SET DESCRIPTOR
SET DESCRIPTOR <descr name> <set info>
За одно выполнение записывает количество заполненных элементов или заполняет один из элементов.
