- •1.Oracle – основные черты. Логическая структура б.Д. Примеры – из нашей б.Д:
- •4.Курсорные циклы. В чём их преимущество. Особенность использования переменной курсорного цикла.
- •Типы, определяемые пользователем, примеры. Объявление переменных.
- •Синтаксис команды update.
- •Синтаксис команды insert
- •Примеры использования
- •Средства защиты базы данных. Приведите примеры использования из нашей практики.
- •Целостность базы данных, управление правилами целостности
- •Язык dml? Всё, что Вы знаете об этой аббревиатуре. Примеры из нашей работы
- •Язык ddl? Всё, что Вы знаете об этой аббревиатуре. Примеры из нашей работы
- •Синтаксис команды insert: обязательно с практическими примерами.
- •Синтаксис команды delete: обязательно с практическими примерами.
- •Синтаксис
- •Синтаксис команды select: обязательно с практическими примерами.
- •Синтаксис команды truncate: обязательно с практическими примерами.
- •Синтаксис
- •Отличия от оператора delete
- •Структура блока pl/sql
- •Программные модули. Структура. Способы хранения, вызова. Преимущества использования.
- •Создание хранимых процедур и функций. Способы вызова из различных сред.
- •Назначение и преимущества хранимых процедур
- •Реализация хранимых процедур
4.Курсорные циклы. В чём их преимущество. Особенность использования переменной курсорного цикла.
Курсорные циклы FOR
Курсорный цикл FOR - итеративная конструкция, которая позволяет использовать OPEN, FETCH, CLOSE курсор в пределах цикла. Он позволяет выполнять операции над каждой строкой, выбранной в цикле. Обычно он используется, когда Вы собираетесь обрабатывать каждую строку, которую он возвращает. Если Вам нужно прервать цикл преждевременно, используйте явные курсоры (с их большим управлением).
DECLARE
CURSOR addresses_c IS
SELECT * FROM addresses
WHERE state = 'PA';
BEGIN
FOR rec IN addresses_c LOOP
DBMS_OUTPUT.put_line('ROWCOUNT=' ||
TO_CHAR(addresses_c%ROWCOUNT, '000'));
END LOOP;
END;
Вывод из курсора rec может использоваться только в цикле. Вы не можете использовать запись (record) за пределами цикла, поскольку она не существует за пределами области цикла. Если Вам нужно видеть значение переменной типа record за пределами цикла, назначьте ему некоторую переменную, определенную за пределами цикла. Record переменная неявно объявлена с теми же типами полей, что и строки курсора, и может быть названа, как угодно.
Ни один из атрибутов курсора, кроме ISOPEN, недоступен за пределами цикла, поскольку курсор не открыт. Если Вы пытаетесь вызвать FOUND, NOTFOUND и ROWCOUNT за пределами курсора для (FOR) цикла, то получите ошибку: ORA-01001: invalid cursor.
Подобно явным курсорам, курсор, использованный на курсоре для (FOR) цикла, может также использовать параметры.
Самый простейший вид курсора для (FOR) цикла представляет собой запрос, вставленный в описание цикла:
FOR x IN (SELECT * FROM addresses) LOOP
cnt:= cnt + 1;
-- сделаем здесь что-нибудь полезное
-- (do something useful here)
END LOOP;
5.Типы данных PL/SQL: скалярные, составные, ссылочные.
Типы данных
Язык PL/SQL поддерживает следующие категории типов:
встроенные типы данных, включая коллекции и записи;
объектные типы данных.
Встроенные типы данных
Встроенные типы данных
На рис 11.1 приведен список встроенных типов PL/SQL.
Рис. 11.1. Список встроенных типов PL/SQL
Скалярные типы описывают простые значения, не имеющие внутренних составляющих.
Составные типы описывают структуры, в которых имеются внутренние компоненты.
Ссылочные типы содержат значения. LOB типы содержат значения, называемые локаторами, которые определяют расположение больших объектов хранимых данных (например, графические файлы).
LOB-типы используются для хранения больших объектов (Large Object). Стандарт SQL-99 ввел поддержку LOB-типов для расширенного уровня соответствия. Однако в Oracle реализован более полный набор LOB-типов.
