Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Язык SQL.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.4 Mб
Скачать

4.5.4 Стандартные представления словаря данных Oracle

Напомним, что словарь данных СУБД – это совокупность служебных таблиц, в которых хранится исчерпывающая информация обо всех объектах базы данных (метаданные). Доступ к словарю данных Oracle осуществляется только через представления, названия которых формируются по определенным правилам:

dba_название (служебная информация для АБД)

user_ название (информация об объектах конкретного пользователя)

all_ название (полная информация)

Примеры представлений:

user_tables (информация о таблицах)

user_views (информация о представлениях)

user_triggers (информация о триггерах)

dba_users (имена пользователей)

all_objects (информация обо всех объектах)

Например, с помощью команды

SELECT table_name FROM user_tables

можно получить имена всех таблиц, созданных конкретным пользователем.

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

4.6 Хранимый код. Триггеры

4.6.1 Процедурные расширения языка sql

Как мы показали в предыдущих лекциях, язык SQL является очень мощным языком манипулирования данными, однако для решения сложных задач обработки данных ему не хватает управляющих конструкций, имеющихся в универсальных языках программирования. В связи с этим многие СУБД имеют процедурные расширения этого языка, которые представляют собой полноценный язык программирования, поддерживающий возможность использования в нем операторов SQL. На таком языке можно писать процедуры и функции, постоянно хранящиеся в базе данных и исполняемые в среде СУБД.

К сожалению, на настоящий момент ситуация такова, что каждая СУБД поддерживает свой собственный язык процедурного расширения SQL, что усложняет задачи переносимости программного обеспечения. Поэтому те примеры, которые будут приведены в этой лекции, используют процедурный язык PL/SQL, поддерживаемый Oracle, и работают только в среде этой СУБД. Из других процедурных расширений наиболее близок к PL/SQL язык СУБД PostgreSQL, который называется PLG/SQL. Используемое в Microsoft SQL Server процедурное расширение Transact-SQL по синтаксическим конструкциям отличается от PL/SQL, но по семантике является близким. Во всяком случае, понимание логики разработки хранимого кода на PL/SQL поможет легко освоить и любое другое процедурное расширение.

Для дальнейшего изложения вначале необходимо привести минимальные сведения по конструкциям языка PL/SQL. По синтаксису он наиболее близок языку программирования ADA, конструкции его очень логичны. Основной программной единицей является блок – совокупность операторов, заключенная в операторные скобки BEGIN ... END. При выполнении процедурных действий в блоке, как правило, необходимы переменные для хранения промежуточных значений. Объявление переменных предшествует блоку и образует секцию объявления, которая начинается ключевым словом DECLARE. Для переменных поддерживаются те же типы, что и для столбцов таблиц Oracle. Имеется возможность указать тип переменной, явно ссылаясь на определенный столбец или таблицу. Например:

DECLARE

x INTEGER;

fio students.name_st%type;

s subjects%type;

BEGIN

. . .

END

В приведенном примере для переменной x тип указан явно, переменная fio имеет такой же тип, как столбец name_st таблицы students, переменная s имеет тип запись (RECORD), структура которой идентична строке таблицы subjects (содержит два поля cod_sub и name_sub).

Операторы языка PL/SQL