Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы-ответы (БД экзамен).docx
Скачиваний:
297
Добавлен:
25.05.2018
Размер:
2.35 Mб
Скачать

41. Pl/sql. Курсоры. Курсорный цикл for.

Курсор – это средство извлечения данных из базы данных Oracle. Курсоры содержат определения столбцов и объектов (таблиц, представлений и т.п.) из которых будут извлекаться данные, а также набор критериев, определяющих какие именно строки должны быть выбраны.

Использование курсора в цикле FOR.

Вместо управления курсором операторами OPEN, FETCH и CLOSE язык PL/SQL предоставляет возможность последовательной обработки курсора в цикле FOR.

Цикл FOR с курсором выполняет следующие действия:

  • Неявно объявляет переменную цикла как запись %ROWTYPE.

  • Открывает курсор.

  • При каждой итерации извлекает следующую строку из результирующего набора в поля неявно объявленной записи.

  • По достижении конца результирующего набора закрывает курсор.

Например:

DECLARE

CURSOR c1 IS

SELECT f1, f2 FROM tbl2

WHERE f1 = 10;

BEGIN

- Неявное объявление rec1

FOR rec1 IN c1 LOOP

/* Выбрана следующая

строка таблицы */

INSERT INTO temp_tbl

VALUES (rec1.f2);

END LOOP;

COMMIT;

END;

42. Pl/sql. Хранимые процедуры.

Хранимая процедура (stored procedure) — это программа, которая выполняет некоторые действия с информацией в базе данных и при этом сама хранится в базе данных. В Oracle хранимые процедуры можно писать на языках PL/SQL и Java.

Хранимые процедуры могут входные параметры и возвращать результаты. В отличие от триггеров, которые принадлежат определенной таблице или представлению, хранимые процедуры принадлежат базе данных в целом. Они могут вызываться любым процессом, использующим базу данных, при условии, что у этого процесса есть достаточные права доступа.

Хранимые процедуры используются для многих целей. Хотя админи­страторы баз данных используют их для выполнения рутинных задач ад­министрирования, главной областью их применения являются все же при­ложения баз данных. Эти процедуры могут вызываться из прикладных программ, написанных на таких языках, как Java, С#, С++ или VB.Net, а также из веб-сценариев, написанных на VBScript или JavaScript. Кроме того, эти процедуры можно вызывать в интерактивном режиме из команд­ной оболочки SQL*Plus.

Можно выделить следующие преимущества хранимых процедур:

В отличие от кода приложений, хранимые процедуры никогда не пере­даются на клиентские компьютеры. Она всегда находится в базе данных и выполняются СУБД на том компьютере, где располагается сервер базы данных. Таким образом, они более безопасны, чем распространяемый код приложения, а кроме того, снижают сетевой трафик. Хранимые процеду­ры постепенно становятся предпочтительным режимом реализации логи­ки приложения в сети Интернет и корпоративных интрасетях. Еще одно преимущество хранимых процедур заключается в том, что SQL-операторы в них могут быть оптимизированы компилятором СУБД.

43. Pl/sql. Функции.

Функция – это подпрограмма, которая вычисляет значение.

Агрегатные функции.

Функция

Результат

COUNT

Количество строк или непустых значений полей, которые выбрал запрос.

SUM

Сумма всех выбранных значений данного поля.

AVG

Среднеарифметическое значение всех выбранных значений данного поля.

MIN

Наименьшее из всех выбранных значений данного поля.

MAX

Наибольшее из всех выбранных значений данного поля.

Стандартные встроенные функции:

Функция

Результат

CURRENT_DATE

Текущая дата.

CURRENT_TIME(точность)

Текущее время с указанной точностью.

LOWER(строкa)

Строка, преобразованная к нижнему регистру;

SUBSTRING(строка FROM n FOR длина)

Часть строки, начинающаяся с n-го символа и имеющая указанную длину.

TRANSLАТЕ(строка USING функция)

Строка, преобразованная с использованием, указанной функции.

UPPER(строка)

Строка, преобразованная к верхнему регистру.