- •Введение.
- •Лекция1.Введениевклиент-серверныеСубд.
- •InterbaseSqlServer.Общиесведения.
- •Платформы
- •Типыприложений
- •ФайлыбазыданныхInterBase
- •Лекция3.Триггерыихранимыепроцедуры
- •Хранимыепроцедуры(StoredProcedures)
- •Терминаторы
- •Заголовок
- •Телопроцедуры
- •Блоккодапроцедуры
- •Операторприсваивания
- •УсловныйоператорIf…then…else
- •ОператорSelect
- •ЦиклForselecTиSuspend
- •ЦиклWhile…do
- •ОператорыInsert,update,delete
- •ОператорExecuteprocedure
- •Исключения
- •СобытияиоператорPost_event
- •Измененияиудаленияхранимыхпроцедур
- •Примерысозданияивызовахранимыхпроцедур
- •Генераторы
- •Увеличениешагагенератора
- •Триггеры
- •ПеременныеNeWиOld
- •Реализацияавтоинкрементныхключевыхполей
- •Лекция4.Транзакции.Механизмтранзакций
- •Атомарность(Atomicity)
- •Согласованность(Consistency)
- •Изолированность(Isolation)
- •Устойчивость(Durability)
- •Неявныйиявныйстарттранзакций
- •Кактранзакцияработает
- •Уровниизолированноститранзакций
- •Параметрытранзакций
- •Компонентыдоступакданнымивизуальныекомпоненты МеханизмыдоступакБд
- •ПроблемырусскихбукввInterBase
- •Лекция5. Основы языка php. Функции php для работы с субд ИсторияPhp
- •ВозможностиPhp
- •Основнойсинтаксис
- •Разделениеинструкций
- •Комментарии
- •Переменные,константыиоператоры
- •Переменные
- •Константы
- •Операторы
- •Типыданных
- •Типboolean(булевилилогическийтип)
- •Типinteger(целые)
- •Типfloat(числасплавающейточкой)
- •Типstring(строки)
- •Одинарныекавычки
- •Двойныекавычки
- •Типarray(массив)
- •Определениеприпомощиarray()
- •Определениеспомощьюсинтаксисаквадратныхскобок
- •Типobject(объекты)
- •Типresource(ресурсы)
- •Решениезадачи
- •Построениеинтерфейсадлядобавленияинформации
- •Установкасоединения
- •Выборбазыданных
- •Получениеспискаполейтаблицы
- •Отображениеспискаполейвhtml-форму
- •Записьданныхвбазуданных
- •Отображениеданных,хранящихсявMySql
- •Заключение
Хранимыепроцедуры(StoredProcedures)
Каждаяхранимаяпроцедураявляетсясамостоятельнойпрограммой,скомпилированнойвовнутреннийдвоичныйязыкInterBase,иявляетсячастьюметаданных(данныеоданных)базыданных.Другимисловами,хранимыепроцедурыявляютсячастьюбазыданныхихранятсявместестаблицами,индексамиидругимиобъектамиБД.Хранимуюпроцедуруможновызватьизклиентскогоприложения,издругойхранимойпроцедурыилитриггера.Хранимыепроцедурымогутбытьдвухтипов:
выполняемыепроцедуры,которыелибовообщеневозвращаютрезультатов,атольковыполняюткакие-тодействия,либовозвращаюттолькоодиннаборвыходныхпараметров.ТакиепроцедурывызываютсякомандойEXECUTEPROCEDURE.
процедурывыборки,которыепредназначеныдлясозданиямногострочныхвыходныхданных,такиепроцедурывызываютсякомандойSELECTииспользуются,каквиртуальныетаблицы.
АлгоритмическийязыкхранимыхпроцедуритриггеровсодержитвсвоейосновеобычныйSQL,дополненныйпеременными,входнымиивыходнымипараметрами,условнымиоператорами,операторамицикловинекоторымидругимисредствами.Синтаксиссозданияхранимойпроцедурыследующий:
SETTERM<новый_терминатор><старый_терминатор>
CREATEPROCEDUREИмя_Процедуры
[(<входной_параметр><тип_данных>
[,<входной_параметр><тип_данных>[…]])]
[RETURNS
(<выходной_параметр><тип_данных>
[,<выходной_параметр><тип_данных>[…]])]
AS
<тело_процедуры>
<тело_процедуры>=
[DECLARE[VARIABLE]<переменная><тип_данных>;[…]]
BEGIN
<составнойоператор>
END<терминатор>
SETTERM<старый_терминатор><новый_терминатор>
Еслисинтаксиспредставляетсявамслишкомсложным,непугайтесьзаранее,насамомделевсенетакстрашно,каккажетсяспервоговзгляда.Разберемегоподробнейпочастям.
Терминаторы
ТерминатораминазываютсясимволыокончанияSQLоператора.Установкатерминаторовнеотноситсянапрямуюксинтаксисухранимыхпроцедурилитриггеров,однакопопыткасозданияпроцедурыбезпереопределениятерминатора,скореевсего,приведеткошибке.Деловтом,чтовнутрисоздаваемойпроцедурынеоднократноможетвстречатьсясимвол";",которыйпоумолчаниюявляетсясимволомконцаоператоравязыкеSQL.ВэтомслучаеутилитаIBConsoleрешит,чтооператорзакончен,ипопытаетсяеговыполнить.Нопроцедураещенебудетпрочитанадоконца,чтоиприведеткошибке.Выход:переопределитьтерминатор.Делаетсяэтодовольнопросто:
SETTERM<новый_терминатор><старый_терминатор>.
Вкачественовогосимволаокончаниявыможетеиспользоватьлюбойредкийсимвол,например"^"или"&".Затемвтелепроцедурыможетсколькоугодноразвстречатьсясимвол";",SQLприэтомневосприметегокакокончаниеоператора.ЗавершающуюENDпроцедурыследуетзакрытьустановленнымвамитерминатором,вэтомслучаепроцедурабудетпрочитанаIBConsoleдоконцаивыполненабезошибок.Анапоследоквывновьпереопределяететерминатор,устанавливаястандартныйсимвол";".Например:
SETTERM^;
CREATEPROCEDURE……^
SETTERM;^
Здесь,идалеевлекциипоказаныпримерыразличныхфрагментовпроцедуры,аневсейпроцедурывцелом.ПоэтомувыполнятьданныепримерывInteractiveSQLненужно,этовсеравноприведеткошибке.Вконцелекциибудутпредставленытрипримерарабочихпроцедур.
Совет:выберитедлясебякакой-тоодинсимволдляпереопределениятерминатора,ивсегдаиспользуйтетолькоего,чтобынепутатьсявкодепроцедурилитриггеров.
Заголовок
Заголовокпроцедурысостоитизследующихразделов:
Имяпроцедуры-обязательныйэлемент.Имядолжнобытьуникальнымвовсейбазеданных.Пример:
CREATEPROCEDUREProc1
Входныепараметры-необязательныйэлемент.Входныепараметры,какивпроцедурахDelphi,служатдляпередачивпроцедурукаких-тозначенийизвнешнегоприложения,другойпроцедурыилитриггера.Приэтомтипыданныхэтихпараметровмогутбытьлюбыми,определеннымивSQL,кромемассивов.Параметрыобъявляютсяввидесписка"параметртип",несколькопараметровразделяютсязапятой.Именавходныхпараметровпроцедурынеобязанысоответствоватьименампараметроввызывающегоприложения,нотипыданныхдолжнысовпадать.Пример:
CREATEPROCEDUREProc2
(perem1Integer,perem2Float,perem3Date)
Выходныепараметры-необязательныйэлемент.Выходныепараметрыслужатдлявозвратаввызывающееприложениеспискарезультирующихзначений.Объявлениевыходныхпараметров(еслиониесть),начинаетсяключевымсловомRETURNS,послекотороговскобкахпараметрыперечисляютсяввидесписка"параметртип".Пример:
CREATEPROCEDUREProc3
(vhod_param1Integer)
RETURNS(vihod_param1Double,vihod_param2Varchar(10))
КлючевоесловоAS-обязательныйэлемент,указывающийнаокончаниезаголовкапроцедуры.Пример:
CREATEPROCEDUREProc4
RETURNS(paramchar(50))
AS