- •Введение.
- •Лекция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
- •Заключение
ОператорSelect
ХранимаяпроцедураможетсодержатьоператорSELECTдлявыводаодногоилинесколькихзначенийиприсвоенияэтихзначенийлокальнымпеременнымиливыходнымпараметрам.Пример:
SELECT*FROMTABLE_FIRMA
INTO:fam,:imya,:otch
ТаблицаTABLE_FIRMAсодержиттритекстовыхполя,содержащиефамилию,имяиотчествосотрудника.Впримереберетсяперваязаписьтаблицы,изначенияееполейприсваиваютсялокальнымпеременным(иливыходнымпараметрам)fam,imyaиotch.Однакоболеетипичнымявляетсяприменениеэтогооператорасусловиемвыборки,возвращающимлишьоднозначение:
SELECTMAX(KOLVO)FROMSKLAD
INTO:p_kolvo
ЦиклForselecTиSuspend
Частобываетнедостаточнополученияданныхлишьоднойзаписи.Чтобыполучитьмножествозначений(виртуальнуютаблицу),используетсяоператорFOR,имеющийследующийсинтаксис:
FORSELECT<условие_выборки>
INTO<список_переменных/параметров>DO<оператор>
Здесь<условие_выборки>-любоеусловиеоператораSELECT.
<список_переменных/параметров>-Списоклокальныхпеременныхиливыходныхпараметров,чейтипданныхсоответствуеттипуданных,полученныхкомандойSELECT.
<оператор>-выполняемыйоператорцикла.ОбычноэтимоператоромбываетоператорSUSPEND,которыйпомещаетполученнуюзаписьвбуфер(кэш),итребуетполученияследующейзаписи,итакдотехпор,поканезакончитсяцикл.Такаяконструкцияпозволяетполучатьнеоднузапись,анаборзаписей,которыйвозвращаетсяввидевиртуальнойтаблицы.Такиепроцедурыназываютсяпроцедурамивыборки,ивызываютсякакобычныетаблицы.
ОператорSUSPENDприменяетсятольковхранимыхпроцедурахвыборки,втриггерахоннедопустим.Ввыполняемыхпроцедурахпользоватьсяэтимоператоромсинтаксическинезапрещено,однакоделатьэтогонестоит-всепоследующиепослеSUSPENDоператорынебудутвыполнены.ВместоэтоговвыполняемыхпроцедурахобычноприменяютявнуюкомандудосрочноговыходаEXIT.Пример:
FORSELECTTOVAR,KOLVOFROMTABLESDELKI
INTO:param_st,:param_int
DOSUSPEND;
Вданномпримеревыходнымпараметрамparam_stиparam_intприсваиваютсязначенияполейTovarиKolvoпервойзаписи,послечеговызываетсяоператорSUSPENDипроцедураприостанавливается.Данныепередаютсяввызывающуюпрограмму,послечегопроцедуратакимжеобразомобрабатываетвторуюзапись.Итакдоконцатаблицы.Длявызывающейпрограммывсевыглядиттак,будтовызываласьтаблица,анехранимаяпроцедура.Однакозачастуюпроцедурывыборкивыполняютсянамногобыстрее,чемтакойжезапросизклиентскогоприложения,ведьпроцедура-этоскомпилированнаяподпрограмма,котораявыполняетсянасторонесервера.
Следуетотметить,чтоприменениеэтогоцикланеограничиваетсятолькооператоромSUSPEND.Выможетеустановитьтамлюбойоператор,илинесколькооператоров,поместивихвскобкиBEGIN…END.Например,втелециклавыможетепроверятьзначенияполейнакакое-тоусловие,иеслиусловиеневерно,исправитьзапись.
ЦиклWhile…do
Этотцикланалогичентому,чтовыиспользуетевDelphi:
WHILE(<условие_цикла>)DO
<оператор>
Каквидноизсинтаксиса,условиецикладолжнобытьзаключеновкруглыескобки.Операторможетбытьсоставным,помещенныммеждуBEGINиEND.Крометого,втелеоператораможетвстречатьсякомандаEXIT,служащаядляпринудительногозавершенияработыпроцедуры.ВтриггереоператорEXITнеприменяется.
ОператорыInsert,update,delete
ВхранимыхпроцедурахитриггерахмогутвстречатьсястандартныеSQL-операторымодификацииданныхINSERT,UPDATE,иDELETE,которыесоответственно,позволяютвставитьновуюзапись,исправитьилиудалитьсуществующуюзапись.ВотличиеотSQL,вкачествепараметроввэтихоператорахвместоназванияполеймогутиспользоватьсялокальныепеременные.Чтобыотличитьназванияполейотименпеременных,последниедолжныпредварятьсядвоеточием.ПримерпроцедурысоператоромINSERTсмотритевконцелекции.