Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Oracle ОТВЕТЫ К ЭКЗАМЕНУ_с нашими вопросами.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
131 Кб
Скачать
☆

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-типов.