- •Введение.
- •Лекция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
- •Заключение
Телопроцедуры
Хранимыепроцедуры,какипроцедурывDelphi,могутиметьлокальныепеременные,илинеиметьих.Еслилокальныхпеременныхнет,телопроцедурыпредставляетсобойтолькосоставнойоператор,заключенныйвскобкиBEGIN…END.Причемэтискобкиобязательны,дажеесливпроцедуревсеготолькоодиноператор.
Еслижелокальныепеременныеимеются,товначалеихнужнообъявитьпослеключевыхсловDECLAREVARIABLE,послечегоследуетсоставнойоператор.Приэтомследуетпомнить,чтообъявлениекаждойпеременнойявляетсяотдельнымоператоромидолжнозавершатьсяточкойсзапятой.Пример:
SETTERM^;
CREATEPROCEDUREMyProc(param1Integer)
RETURNS(param2Varchar(20),param3DoublePrecision)
AS
DECLAREVARIABLEperem1Varchar(10);
DECLAREVARIABLEperem2Date;
DECLAREVARIABLEperem3Integer;
BEGIN
…
END^
SETTERM;^
Вприведенномпримеремывначалепереопределяемтерминатор,послечегоприступаемнепосредственнокописаниюпроцедуры.Впроцедуреимеетсяодинвходящий,идвавыходящихпараметра,атакжеобъявленытрилокальныепеременные.Заметим,чтоключевоесловоDECLAREобязательно,авотсловоVARIABLEможноопустить.Есливыжелаете,чтобывашабазаданныхбыласовместимасраннимиверсиямиInterBase,тоVARIABLEлучшеуказывать.Завершаетсяпроцедурановымтерминатором"^",послечегомыпереопределяемегонастандартныйсимвол";".
Блоккодапроцедуры
БлоккодапроцедурыначинаетсяключевымсловомBEGIN,иоканчиваетсяключевымсловомEND.Блоккодаможетсостоятьизодногоилинесколькихоператоров,атакжесодержатьвложенныеблокикодаBEGIN…END.
Вблокекодапроцедурымогутвстречаться:
операторыприсваивания,которыеприсваиваютзначениялокальнымпеременным,входнымиливыходнымпараметрам(вотличиеотоператора":="вDelphi,вSQLэтопростознакравно"=");
операторыSELECTдлявыборкиданныхизтаблиц.Результатывыборкимогутприсваиватьсяпеременнымилипараметрам;
циклы,такиекакFORиWHILE;
управляющиеструктурыIF;
операторыEXECUTEPROCEDUREдлявызовадругойхранимойпроцедуры;
комментарии,заключенныевскобки/*…*/;
символысравнения>=,>,<=,<,<>,=,!<(неменьше),!>(небольше),!=(неравно);
командымодификациитаблиц,такиекакINSERT,UPDATEилиDELETE;
идр.
Важно!ЕсливблокекодалокальныепеременныеиспользуютсявнутриSQL-оператора(например,SELECT),передихименамиследуетставитьдвоеточие.Вдругихоператорахэтогоделатьненужно.
Операторприсваивания
Операторприсваиванияимеетвид
<переменная/выходнойпараметр>=<выражение>
ислужитдляприсвоениялокальнойпеременнойиливыходномупараметрукакого-либозначения.Здесьестьнесколькоправил.Во-первых,переменнаяиливыходнойпараметрдолжныиметьсовместимыйтипданныхсвыражением.Во-вторых,передименемпеременнойиливыходногопараметрадвоеточиенеставится.В-третьих,вInterBaseвыражениеможетбытьлибостроковым,либоарифметическим.Впервомслучаевыражениеможетсодержатьоператорконкатенации(объединения)строк"||",вовторомслучае-четыреарифметическихоператора+,-,*и/.Помимоэтого,выражениеможетсодержатьзначенияоднотипныхстолбцовтаблиц,илирезультатработыдругойпроцедуры.
УсловныйоператорIf…then…else
ВотличиеотDelphi,вInterBaseусловноевыражениеоператораIFобязательнонужнопомещатьвкруглыескобки,крометого,передELSEточкасзапятойнеопускается:
IF(<условное_выражение>)THEN<оператор_1>;[ELSE<оператор_2>]
Какобычно,если<условное_выражение>возвращаетистину,товыполняется<оператор_1>,
впротивномслучаевыполняется<оператор_2>.Пример:
IF(KOLVO>5ANDKOLVO<10)THEN…;
Заметьте,чтоприоритетоперацийсравнениявыше,чемлогическихоперацийAND,ORиNOT,поэтомуприиспользованииболеечемодногоусловиянетнеобходимостизаключатькаждоеизнихвотдельныескобки.АльтернативныйвариантELSEнеявляетсяобязательнымиможетбытьопущен.