ГОСТ Р ИСО 10303-14—2015
Правила и ограничения
a) Отображение схемы должно ссылаться по крайней мере на одну EXPRESS-схему. объявлен
ную как источник отображения, используя синтаксический элемент AS SOURCE.
b
) Отображение схемы должно ссылаться по крайней мере на одну EXPRESS-схему. объявлен
ную как цель отображения, используя синтаксический элемент
a
s t
a
rg
e
t
.
Пример
—
Данный пример иллюстрирует обозначение исходной и целевой EXPRESS-схем.
EXPRESS-схема
schema_target_one
представляет цель отображения. EXPRESS-схема
schema_
source_one
представляет источник отображения; на нее можно ссылаться как на
si в
рамках обла сти
действия данного отображения схемы
map_name.
SCHEMA_MAP map_name;
REFERENCE FROM schema_target_one AS TARGET;
REFERENCE FROM si : schema_source_one AS SOURCE;
MAP my_map AS ...
END_SCHEMA_MAP;
9.7 Локальное объявление
В разделе отображения могут быть объявлены локальные переменные. Локальные перемен
ные объявляются с помощью элемента языка LOCAL. Локальная переменная видима только в рам
ках области действия раздела отображения, в котором она объявлена, включая элементы языка
IDENTIFIED BY, WHERE и SELECT. При вычислении значения раздела отображения все локальные
переменные изначально имеют неопределенное значение, если только их значения не инициализиро
ваны в явном виде. Локальным переменным могут присваиваться значения в теле раздела отображе
ния. а в выражениях на них могут даваться ссылки.
Синтаксис:
47 binding header = [ PARTITION partition id ’;* ] [ from clause j i
local decl j
[
where clause 1 [ identified by clause 1 [
ordered by clause J .
129 local deci = LOCAL local variable ( local variable ) END LOCAL ’;’ .
130 local variable = variable id
<
’,’ variable id) ’:’ parameter type [
expression ]-
Правила и ограничения
Синтаксический элемент lo c a l d e cl не должен использоваться в объявлении образа.
Пример
—
В данном примере локальной переменной задается значение экземпляра целевого объ
екта. Атрибут данного объекта модифицируется в теле отображения.
SCHEMA_MAP аm2aim;
REFERENCE FROM arm AS SOURCE;
REFERENCE FROM aim AS TARGET;
MAP product_map AS p :product;
p :product;
FROM
ap : arm_product;
LOCAL
asc : applied_security_classification;
END_LOCAL;
SELECT
asc :=»asc(?security_classifxcation_map(ap.security) ;
asc.iterae := asc.items + p;
END_MAP;
MAP security_classification_map AS
asc : applied_security_classification;
scl : security_classification;
FROM
arm_asc : arm_security_classification;
SELECT
30