КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Блокировки схемы данныхПоследний тип блокировок, связан с командами DDL и схемой данных (Schema). Блокировка схемы (Schema lock) предназначена для блокирования метаданных объектов базы данных. Типичной командой изменения таких данных может служить команда ALTER. Эта команда приводит к изменению системных таблиц метаданных, таких, как syscolumns, sysobjects, sysforeignkeys и других. Чтобы запретить другим транзакциям обращаться к модифицируемым ресурсам и их метаданным, введены блокировки схемы. Блокировки схемы бывают всего двух типов: Блокировка стабильности схемы (Schema Stability Lock), обозначается Sch-S. Данный тип блокировки предназначен для гарантии неизменности метаданных, но не самих данных. Т.е. блокировка стабильности схемы – единственная из всех типов блокировок, совместимых с монопольной блокировкой. В основном она устанавливается при компиляции тела запроса или хранимой процедуры, на это время запрещается вносить изменения в схему данных, однако разрешается устанавливать любой тип блокировок на сами данные, с которыми будет работать компилируемый запрос. Блокировка изменения схемы (Schema Modification Lock), обозначается Sch-M. Данный тип блокировки не совместим ни с каким другим типом, ни с самим собой. Устанавливается после внесения изменений в схему данных и снимается после завершения транзакции.
13. Блочно – модульный принцип организации программ в языке Турбо Паскаль. Локальные и глобальные переменные. Примеры.
Понятие глобальных и локальных переменных введено в языке Паскаль из-за наличия в нем понятия блочной структуры. Любая программа, процедура и функция представляют собой блок со своей областью описаний и могут содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Программа и совокупность описанных в ней процедур и функций образует блочную структуру. Блок, содержащий в своем разделе описаний другой блок (процедуру и функцию), называется внешним по отношению к нему. Блок, содержащийся в разделе описаний некоторого блока, называется внутренним или подблоком. Объекты, описанные внутри какого-либо подблока, являются по отношению к нему локальными и недоступны внешним блокам, т.е. на них можно ссылаться только внутри блока, в котором они описаны.
Program shapka_procedur; {Блочная программа} Ch:char; {Глобальные параметры, исп. в процедуре} Len:lnteger; {Глобальные параметры, исп. в процедуре} {————————————————————————————————————} Procedure Lin; {Процедура вычерчивания линий} Var l:lnteger; {описание локальной переменной} Begin FOR l:=1 TO Len DO write(Ch); writeln; End; {конец процедуры} {————————————————————————————————————} BEGIN {начало главной программы} writeIn('Таблица 1'); writeln; Len:=30; {Задание длины вычерчиваемой линии} Ch:=’=’; {Задание символа вычерчивания линии} Lin; {Вызов процедуры вычерчивания линии} {..вывод текста шапки} Lin; {Вызов процедуры вычерчивания линии} {..вывод номеров граф} Ch:=’_’; {Задание символа вычерчивания линии} Lin; {Вызов процедуры вычерчивания линии} END. {Конец главной программы}
Для того чтобы процедура могла выполнить не одну строго определенную последовательность действий, а целое семейство аналогичных действий, но с разными параметрами, необходимо дополнить процедуру этими параметрами. В нашем случае целесообразно предусмотреть два параметра: параметр, определяющий длину строки, и параметр для выбора символа, которым предполагается прочертить строку. Тогда программа, включающая в себя процедуру, будет иметь вид, представленный ниже. Пример Program shapka3_procedura; {Заголовок основной программы} { Описание переменных основной программы } { ....... } Procedure Lin(Len:integer;Ch:Char); {Процедура линии} {Формальные параметры:длина - Len,символ - Ch} Var I:lnteger; Begin {Начало текста процедуры} FOR l:=1 ТО Len DO write(Ch); writeln; End; {Конец процедуры} BEGIN {начало главной программы} writeIn ('Таблица 2.1'); Lin(40,’=’); {Вызов процедуры вычерчивания линии} { ....... } { ..вывод текста шапки } { ....... } Lin(40,’=’); {..вывод номеров граф} Lin(40,’-’); {Обращение к подпрограмме вычер. линий} {Продолжение текста программы} END. {Конец главной программы}
В скобках после имени процедуры описываются имена и типы формальных параметров. Вызов такой процедуры происходит с указанием значений фактических параметров так: Lin(40,’=’), где 40 - длина линии, ‘=’ - используемый символ. Значения, стоящие в круглых скобках, называются аргументами, т.е. теми значениями фактических параметров, которые подставляются при вызове процедуры. Параметру LEN будет присвоено значение 40, параметру Ch значение ‘=’ типа Char. В общем случае аргумент и параметр должны относиться к совместимым типам, т.е. значение аргумента должно быть таким, чтобы его можно было назначить параметру.
|