Документация Oracle на русском языке





Сайт посвящен разработке информационных систем с использованием технологий Oracle. На сайте можно найти полезную литературу и документацию на русском языке по программированию и администрированию Oracle.Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации.

Главная :: Карта


Oracle Database или Oracle RDBMS — объектно-реляционная система управления базами данных компании Oracle.



 

DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Блок PL/SQL

Базовой единицей любой программы, написанной на PL/SQL, является блок. Из блоков состоят все программы PL/SQL, причем блоки могут
идти один за другим (последовательно) либо вкладываться один в другой.
Существуют два различных типа блоков: анонимные блоки и именован­ные. Анонимные блоки обычно создаются динамически и выполняются то­лько один раз. Этот тип блоков, как правило, создается в клиентской программе для вызова подпрограммы, хранящейся в базе данных. Имено­ванные блоки отличаются тем, что они имеют имя. Именованные блоки
могут быть разбиты на категории следующим образом:
Помеченные блоки (labeled block) являются анонимными блоками с мет­кой, которая дает блоку имя. Они создаются обычно динамически и выполняются только один раз. Помеченные блоки используются так же, как и анонимные блоки, но метка позволяет ссылаться на пе­ременные, которые иначе были бы недоступны.
Подпрограммы (subprogram) делятся на процедуры и функции. Они мо­гут храниться в базе данных как автономные объекты, как часть мо­дуля или как методы объектного типа. Подпрограммы обычно не
изменяются после своего создания и выполняются неоднократно. Подпрограммы могут объявляться в других блоках. Независимо от того, где они объявлены, подпрограммы выполняются явно посред­ством вызова процедуры или функции.
• Триггеры (triggers) — это именованные блоки, которые ассоциируются с некоторым событием, происходящим в базе данных. Они, как пра­вило, не изменяются после своего создания и выполняются много­кратно неявным образом при наступлении соответствующих событий. Событием, активизирующим триггер, может быть выпол­нение оператора языка манипулирования данными (DML, data ma­nipulation language) над некоторой таблицей базы данных. К операторам DML относятся INSERT (ввести), UPDATE (обновить) и DELETE (удалить). Это может также быть оператор языка опреде­ления данных (DDL, data definition language), такой как CREATE или DROP, или событие базы данных, например запуск или останов.
Ниже приводится анонимный блок PL/SQL, с помощью которого в
таблицу temp_table вводятся две строки, затем они выбираются и отобра­жаются на экране. Пример представлен в виде сеанса SQL*Plus:

внимание

Для выполнения приведенного выше примера, как и большинства других примеров этой книги, необходимо создать несколько таблиц, в том числе таблицу temp_table. Это можно сделать при помощи сценария tables, sql. Имена нужных файлов указываются в начале каждого примера, их также можно найти в файле README. Модуль DBMS_OUTPUT описан в главе 2.
Можно превратить этот блок в хранимую процедуру, если заменить ключевое слово DECLARE ключевыми словами CREATE OR REPLACE PROCEDURE (см. главы 9 и 10). Обратите внимание, что имя процедуры указывается после ключевого слова END.
После создания процедуры можно вызывать ее с помощью анонимно­го блока следующим образом:
I
Более подробно о создании и вызове хранимых подпрограмм расска­зывается в главах 9 и 10.
В заключение создадим для таблицы temp..table триггер, чтобы гаранти­ровать ввод в столбец num_col только положительных значений. (Более по­дробно триггеры обсуждаются в главе 11.) Этот триггер будет вызываться всякий раз, когда в таблицу temp_table вводится новая строка или обновля­ется существующая.
Этот триггер будет срабатывать всякий раз, когда вызывается INSERT или UPDATE для таблицы te mp tab 1е. Следующий сеанс SQL*PlusnoKa3bi-вает несколько успешных и неуспешных операций:

 



jAntivirus