Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ограничения на уровне домена

Средства СУБД InterBase, обеспечивающие приемлимые значения целостность данных.

DO

FOR

<оператор SELECT>

< оператор>;

 

Оператор SELECT представляется в расширенном синтаксисе оператора SELECT для алгоритмического языка хранимых процедур и триггеров, то есть в нем может присутствовать предложение INTO.

Алгоритм работы оператора FOR SELECT... DO заключается в следующем. Выполняется оператор SELECT, и для каждой строки результирующего набора данных, возвращаемого данным SELECT, выполняется оператор, следующий за словом DO. Этим оператором часто бывает SUSPEND (см. ниже), который приводит к возврату выходных параметров в вызывающее приложение.

 

Оператор SUSPEND. Оператор SUSPEND передает в вызывающее приложение значения результирующих параметров (перечисленных после слова RETURNS в описании функции), имеющие место на момент выполнения SUSPEND. После этого выполнение хранимой процедуры приостанавливается. Когда от оператора SE­LECT вызывающего приложения приходит запрос на следующее значение выходных параметров, выполнение хранимой процедуры возобновляется.

 

Оператор WHILE... DO. Оператор имеет формат

WHILE (<условие>) DO

< оператор>

 

Алгоритм выполнения оператора: в цикле проверяется выполнение условия; если оно истинно, выполняется оператор. Цикл продолжается до тех пор, пока условие не перестанет выполняться.

 

Оператор EXIT. Оператор EXIT инициирует прекращение выполнения процедуры и выход в вызывающее приложение.

 

Оператор EXECUTE PROCEDURE. Оператор имеет следующий формат:

 

EXECUTE PROCEDURE имя [параметр [, параметр...]];

[RETURNING_VALUES параметр [, параметр... ]];

 

Выполняет другую хранимую процедуру из тела данной хранимой процедуры. При этом после слова PROCEDURE перечисляются входные параметры, если они есть, а после RETURNING_VALUES перечисляются выходные параметры.

 

Оператор POST_EVENT. Оператор имеет следующий формат

 

POST_EVENT "Имя события";

 

Он применяется для посылки сервером клиентским приложениям сообщения о наступлении какой-либо ситуации, связанной с именем события. Приложение должно зарегистрироваться на сервере для получения уведомления о наступлении событий и указать список интересующих приложение событий.

 

 

Пришло время рассмотреть предложение CHECK оператора CREATE DOMAIN.

 

CREATE DOMAIN домен [AS] <тип_данных>

[DEFAULT {литерал | NULL | USER}]

[NOT NULL] [CHECK (<условие_поиска>)]

[COLLATE collation]

 

Предложение CHECK определяет требования к значениям каждого столбца, ассоциированного с доменом. Столбцу не могут быть присвоены значения, не удовлетворяющие ограничениям, наложенным в предложении CHECK. Формат ограничения, накладываемого на значения полей, ассоциированных с доменом:

 

<огранич_домена> = { VALUE <оператор> <значение> | VALUE [NOT] BETWEEN <значение1> AND <значение2>

VALUE [NOT] LIKE <значение> [ESCAPE <значение>]

VALUE [NOT] IN (<значение1> [, <значение2>...])

VALUE IS [NOT] NULL

VALUE [NOT] CONTAINING <значение>

VALUE [NOT] STARTING [WITH] <значение>

(<огранич_домена>)

NOT <огранич__домена>

<огранич_домена> OR <огранич_домена>

<огранич_домена> AND <огранич_домена>

 

где <оператор> = {= | < | > | <= | >= |!< |!> | <> |!=}

Ключевое слово VALUE далее означает все правильные значения, которые могут быть присвоены столбцу, ассоциированному с доменом.

· VALUE <оператор> <значение> определяет, что значение домена
находится с параметром значение во взаимоотношениях, определяемых параметром оператор. Например, значение, которое может быть записано в столбец, ассоциированный с доменом ID_TYPE, должно быть больше или равно 100:

 

CREATE DOMAIN ID_TYPE AS

INTEGER CHECK(VALUE >= 100);

 

· BETWEEN <значение1> AND <значение2> определяет, что значение домена должно находиться в промежутке между значение] и значение2, включая их;

· LIKE <значение1> [ESCAPE <значение2>| определяет, что значение домена должно "походить" на параметр значение 1. При этом употребляется символ '%' для указания любого значения любой длины и символ '_' (подчеркивания) для указания любого единичного символа. Например,

 

LIKE "%USD" - вводимое значение должно оканчиваться символами 'USD', независимо от того, какие символы и сколько расположены перед ними;

 

LIKE " __94" – вводимое значение может содержать 4 символа, из которых первые два – любые и последние два - '94'.

 

ESCAPE <значение2> используется, если в операторе LIKE символы '%' или '_' должны использоваться в шаблоне подобия. В этом случае выбирается некоторый символ, например "!", после которого символы '%','_' входят в поисковую строку как непосредственно символы. Символ '!' указывается после слова ESCAPE, например:

 

CREATE DOMAIN SUMMA AS

CHAR(10) CHECK(LIKE "%!%" ESCAPE "!");

 

Значения столбца SUMMA должны заканчиваться символом "%".

 

· IN (<значение1> [, <значение2>...]) определяет, что значение домена должно совпадать с одним из приведенных в списке параметров значение Х,, например:

 

CREATE DOMAIN SEX AS

CHAR(1) CHECK(VALUE IN ("М","Ж"));

 

· CONTAINING <значение> определяет, что значение домена должно содержать вхождение параметра значение, неважно в каком месте. Например, в наименовании отдела вхождение "041" может встретиться где угодно ("Отдел-041002", "003404192", и т.д.):

 

CREATE DOMAIN OTDEL_TYPE AS

VARCHAR(10) CHECK(VALUE CONTAINING "041")

COLLATE PXW_CYRL;

 

· STARTING [WITH] <значение> требует, чтобы значение домена начиналось параметром значение. Например, название отдела должно начинаться с "041":

 

CREATE DOMAIN OTDEL_TYPE AS VARCHAR(10)

CHECK(VALUE STARTING WITH "041")

COLLATE PXW_CYRL;

 

· Может быть задана комбинация условий, которым должно соответствовать значение домена. В этом случае отдельные условия соединяются операторами AND или OR. Например:

 

CREATE DOMAIN OTDEL_TYPE AS VARCHAR(10)

CHECK(VALUE STARTING WITH "041" AND

VALUE CONTAINING "-12")

COLLATE PXW_CYRL;

 

Для большинства условий можно указать слово NOT, которое изменит условие с точностью до наоборот. Например:

 

CHECK(VALUE NOT BETWEEN 1 AND 100);

<== предыдущая лекция | следующая лекция ==>
Алгоритмический язык хранимых процедур | Определение значения поля первичного ключа с помощью генератора
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 368; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.