
- •Понятия баз данных (бд). Классификация. Информационные, программные, технические и организационные составляющие бд.
- •Системы управления базами данных (субд), классификация и критерии их выбора.
- •Интерфейсы доступа к бд.
- •Архитектуры баз данных. Архитектура клиент-сервер. Распределенные бд.
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Трехуровневая архитектура клиент-сервер. Модель сервера приложений
- •Способы задания и поддержания ограничений целостности в современных субд.
- •Транзакции и их роль в поддержании целостности данных. Методы реализации транзакций: языковые и системные средства.
- •Общая характеристика sql. Стандарты sql. Реализации sql в современных субд
- •Развитие реляционной модели. Объектно-реляционные и гибридные бд. Объектно-ориентированные бд.
- •Хранимые процедуры и триггеры
Хранимые процедуры и триггеры
Хранимые процедуры и триггеры В архитектуре современных систем обработки данных неуклонно возрастает роль серверных СУБД. Дореляционные СУБД отвечали главным образом за доступ к данным и их хранение, предоставляя приложениям возможность перемещаться по базе данных как им угодно, а также сортировать, отбирать и обрабатывать информацию. Однако с появлением реляционных СУБД и SQL ситуация коренным образом изменилась Операции поиска и сортировки стали командами языка SQL, выполняемыми исключительно самой СУБД, и ею же производится вычисление итоговых данных. Теперь явная навигация по базе данных больше не нужна. Последующие расширения SQL, такие как первичные и внешние ключи, ограничения на значения, продолжают эту тенденцию, вытесняя функции проверки данных и обеспечения целостности базы данных, которые раньше были неотъемлемой частью клиентских приложений. А конечная цель этой тенденции проста: чем больше ответственности берет на себя серверная СУБД, тем более эффективной и надежной становится система в целом благодаря централизованному управлению базой данных и снижению вероятности разрушения данных из-за ошибок в клиентских приложениях
Во многих распространенных диалектах SPL для создания хранимой процедуры применяется инструкция create procedure. Эта инструкция назначает новой процедуре имя, по которому в дальнейшем процедуру можно будет вызывать. Имя процедуры должно соответствовать общим правилам для идентификаторов SQL (процедура на рис. 20.1 названа add_cust). Хранимая процедура может принимать ноль или более параметров (в нашем примере их шесть: c_name, с_шм, cred__lim, tgt_sls, C_rep и c_Offc). Обычно значения параметров указываются в виде разделенного запятыми списка, заключенного в скобки и следующего за именем вызываемой процедуры. Заголовок хранимой процедуры содержит имена параметров и типы их данных. Для параметров хранимых процедур могут использоваться те же типы данных, которые поддерживаются в СУБД для столбцов таблиц. Все параметры процедуры являются входными, о чем говорят ключевые слова in, следующие за их именами в заголовке процедуры (сказанное относится к диалекту PL/SQL в Oracle). Когда процедура вызывается, переданные ей аргументы присваиваются ее параметрам и начинается выполнение тела процедуры. Имена параметров могут использоваться в теле процедуры (и, в частности, в составляющих ее стандартных инструкциях SQL) везде, где допускается наличие констант. Встретив имя параметра, СУБД подставляет на его место текущее значение этого параметра. Параметры используются в инструкциях insert и update для вычисления значений столбцов и в условиях отбора В дополнение к входным параметрам некоторые диалекты SPL поддерживают выходные параметры, с помощью которых хранимые процедуры могут возвращать значения, вычисленные в ходе выполнения процедуры. При интерактивном вызове хранимых процедур от выходных параметров мало пользы, а вот если одна хранимая процедура вызывает другую, выходные параметры позволяют им эффективно обмениваться информацией. Некоторые диалекты SPL поддерживают параметры, которые одновременно являются и входными, и выходными, т.е. их значения передаются хранимой процедуре, та их меняет, и результирующие значения возвращаются вызывающей процедуре. На рис 20 2 приведен еще один вариант процедуры add_cust, написанн диалекте Transact-SQL СУБД Sybase (Диалект Transact-SQL используется и Ы^ На crosoft SQL Server, он мало отличается от исходной версии этого диалекта из S SQL Server, которая послужила основой для обеих линий продуктов — Mic ase Sybase ) Обратите внимания на отличия Transact-SQL от диалекта Oracle °S°^ й ключевое слово procedure может быть сокращено до proc, список параметров процедуры не заключен в скобки, а просто следует за и процедуры, именем все имена параметров начинаются с символа @ как в объявлении процедуру и в ее теле, Так отсутствует формальный маркер окончания инструкции — тело процедуры представляет собой единую инструкцию Transact-SQL
/* Процедура для добавления данных о новом клиенте */ create proc add_cust @c_name varchar (20), /* имя клиента */ @c_num integer, /* идентификатор клиента */ @cred_lim money, /* лимит кредига */