On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Макросы ERwin

Поддержка макросов целевым сервером

В шаблонах, создаваемых для триггеров, хранимых процедур, pre- (предварительных) и post-скриптов генерации схем, можно использовать макросы ERwin в случае, если эти возможности поддерживаются целевой СУБД.

Все макросы, за исключением тех, которые особо определены, могут использоваться для всех целевых серверов, поддерживаемых ERwin. Поддержка вашим сервером RI (Referential Integrity) - триггеров, хранимых процедур и/или сценариев - описана в документации сервера.

Использование справочника по макросам

Справочник макросов организован в алфавитном порядке по именам макросов. Информация по каждому макросу включает его описание, синтаксис, область видимости (например, операторы или фрагменты кода, где он может использоваться), возвращаемое значение; и, как правило, пример текста шаблона макроса (шаблона) и соответствующий ему "раскрываемый текст" (рис.1). Рассмотрим каждый элемент:

  • Синтаксис макроса. Описывает синтаксис каждого макроса ERwin, включая ключевые слова, переменные, определяемые пользователем, и необходимую пунктуацию.
  • Область видимости. Для каждого макроса этот элемент перечисляет:
    • Команды "%ForEach", в которые может быть вставлен данный макрос.
    • Возможность видимости макроса как предиката в условном операторе "%If".
    • Типы шаблонов, в которые может вставляться данный макрос. Возможные значения: RI или Rel Override (переопределение отношений), Trigger Override (Триггер.) и Global (Глобальный). Отдельные шаблоны каждого типа перечислены в следующей таблице.
  • Return Value (Возвращаемое значение). Поясняет, что (какой SQL-код) возвращает макрос при генерации.
  • Example (Пример). Содержит пример синтаксиса шаблона и соответствующий результат выполнения. Все примеры с результатом выполнения основаны на использовании подмножества таблиц в модели ERwin MOVIE (целевой SQL-сервер), показанной в наборе инструментов шаблона ERwin. Пример не приводится, если макрос возвращает значение TRUE или FALSE.

Примечание: Пример модели, приведенный выше, показывает физические имена таблиц и столбцов, обозначенные названиями с символом подчеркивания (например, MOVIE_COPY, movie_copy_number). Различные макросы ERwin могут возвращать либо логическое имя ERwin (которое может содержать дефисы или пробелы), либо физические имена баз данных (в которых дефисы или пробелы заменяются символом подчеркивания), в зависимости от ваших потребностей.

Область видимости

Шаблоны

RI или Переопределение отношений

PARENT INSERT RESTRICT

PARENT INSERT CASCADE

PARENT INSERT SET NULL

PARENT INSERT SET DEFAULT

PARENT UPDATE RESTRICT

PARENT UPDATE CASCADE

PARENT UPDATE SET NULL

PARENT UPDATE SET DEFAULT

PARENT DELETE RESTRICT

PARENT DELETE CASCADE

PARENT DELETE SET NULL

PARENT DELETE SET DEFAULT

CHILD INSERT RESTRICT

CHILD INSERT CASCADE

CHILD INSERT SET NULL

CHILD INSERT SET DEFAULT

CHILD UPDATE RESTRICT

CHILD UPDATE CASCADE

CHILD UPDATE SET NULL

CHILD UPDATE SET DEFAULT

CHILD DELETE RESTRICT

CHILD DELETE CASCADE

CHILD DELETE SET NULL

CHILD DELETE SET DEFAULT

 

Хранимые процедуры, присоединенные к таблицам (макросы, используемые в %ForEachFKAtt); pre- и post-скрипты (макросы, используемые в %ForEachEntity)

Trigger Override

TRIGGER UPDATE HEADER

TRIGGER DELETE HEADER

TRIGGER INSERT HEADER

TRIGGER UPDATE FOOTER

TRIGGER DELETE FOOTER

TRIGGER INSERT FOOTER

CUSTOM TRIGGER HEADER

CUSTOM TRIGGER FOOTER

CUSTOM TRIGGER DEFAULT BODY

 

Хранимые процедуры, присоединенные к таблицам (макросы, используемые в %ForEachAtt); pre- и post- скрипты (макросы, используемые в %ForEachEntity)

Global

Все триггеры, хранимые процедуры и pre- и post-скрипты.

Синтаксис макросов ERwin

Синтаксис команд макросов ERwin состоит из ключевых слов, пунктуации и переменных.

  • Ключевые слова всегда предваряются знаком процента (%) и должны вводиться в точности, как указано в таблице (например, %AttFieldName).
  • В синтаксис должны быть включены фигурные скобки {} и простые скобки (); запятые необходимы, если вы включаете в команду более одной переменной.
  • Переменные обозначаются угловыми скобками (например, <macro code1>). При включении своей макрокоманды в триггер, хранимую процедуру или сценарий, вы заменяете переменные определенным вами текстом, числом или другим макросом.

Переменные макросов

Следующий список определяет общие переменные, используемые в синтаксисе макросов:

  • <default value>, <value> и <initial value> представляют определенные пользователем текст или числа, которые задаются так, как вы хотите видеть их после раскрытия макроса ERWin'ом.
  • <action> представляет корректное SQL-действие (например, INSERT, UPDATE или DELETE.).
  • <macro code>, <macro code1>...<macro coden> представляют любую макропоследовательность, являющуюся корректной в текущей области видимости. При последовательном включении в данную команду нескольких макросов, они нумеруются от 1 до n.
  • <predicate> представляет любое корректное булево выражение, которое имеет значение TRUE или FALSE, включая выражения, поддерживаемые макросами ERwin (например, %AttIsFK) и создаваемые поддерживаемыми булевыми операторами (например, %!= и другие операторы сравнения - %And, %Or и %Not).
  • <prefix> <old prefix> и <new prefix> представляют текстовое или числовое значение (например - @ins) или раскрытый макрос (напр., %Parent), которые добавляются к началу имени таблицы или столбца при раскрытии макроса. Если определены и <old prefix> и <new prefix>, то список, создаваемый макросом, имеет два раздела: первый раздел объявляет <old prefix> <element>, а второй - <new prefix> <element>.
  • <separator> представляет один или более символов, используемых для разделения списка, создаваемого макросом. Разделители задаются при помощи кавычек (напр., "OR").
  • <table name>, <default name>, <domain name>, <validation> заменяются именем таблицы, именем по умолчанию, именем ERwin домена, правилом контроля целостности или соответствующим макросом (напр., %TableName, %Child, %DefaultName, %DomainName, %ValidationName).
  • <variable> представляет имя переменной, используемой в триггере, хранимой процедуре или скрипте.

%!=

Булев предикат, возвращающий "true", если значение <macro code1> не эквивалентно значению <macro code2>.

%!=(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE

Пример

Код шаблона

Результат

%ForEachAtt( ) {%If(%!=(%AttFK){%AttName}}

general-condition


%%

Вставляет один символ процента (%) в раскрытый код триггера.

%%

Область видимости

Глобально

Возвращаемое значение

%

Пример

Код шаблона

Результат

/* %%JoinFKPK

/* %JoinFKPK


%*

Умножает значения <macro code1> и <macro code2>.

%*(<macro code1>, <macro code2>)

Область видимости

Глобально

Возвращаемое значение

Число

Пример

Код шаблона

Результат
раскрытия

string1="aaaaa"

string2="bbbbbbbbb"

%*(%Len(%:string1), % Len(%:string2))

45


%+

Складывает значения <macro code1> и <macro code2>.

%+(<macro code1>, <macro code2>)

Область видимости

Глобально

Возвращаемое значение

Число

Пример

Код шаблона

Результат

String1="aaaaa"
String2="bbbbbbbbb"
%+(%Len(%:string1), % Len(%:string2))

14


%-

Вычитает значение <macro code2> из значения <macro code1>.

%-(<macro code1>, <macro code2>)

Область видимости

Глобально

Возвращаемое значение

Число

Пример

Код шаблона

Результат

string1="aaaaa"
string2="bbbbbbbbb"
%-(%Len(%:string1), % Len(%:string2))

- 4


%/

Делит значение <macro code1> на значение <macro code2>.

%/(<macro code1>, <macro code2>)

Область видимости

Глобально

Возвращаемое значение

Число

Пример

Код шаблона

Результат

string1="aaaaa"
string2="bbbbbbbbb"
%/(%Len(%:string1), % Len(%:string2))

0.5556


%:

Возвращает значение <variable>.

%:<variable>

Область видимости

Глобально

Возвращаемое значение

Значение переменной <variable>.

Пример

Код шаблона

Результат

%:@ins_customer_id

1213


%<

Булев предикат, возвращающий значение "true", если значение <macro code1> меньше, чем значение <macro code2>.

%<(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%<=

Булев предикат, возвращающий значение "true", если значение <macro code1> меньше или равно значению <macro code2>.

%<=(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%=

Присваивает значение <macro code> объявленной переменной <variable> (См. %Decl). Результатом выражение является присвоение переменной, результат выполнения не проявляется в развернутом коде.

%=(<variable>, <macro code>)

Область видимости

Глобально

Возвращаемое значение

Нет

Пример

Код шаблона

Результат

%=(@var, %Tablename)

Внутренний, @var присвоено значение %Tablename


%==

Булев предикат, возвращающий "true", если значение <macro code1> равно значению <macro code2>.

%==(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%>

Булев предикат, возвращающий "true", если значение <macro code1> больше значения <macro code2>.

%>(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%>=

Булев предикат, возвращающий "true", если значение <macro code1> больше или равно значению <macro code2>.

%>=(<macro code1>, <macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%Action

Возвращает название действия, которое привело к активизации триггера. Зависит от содержания команды. %Action возвращает значение DELETE, INSERT или UPDATE. Например, если триггер активизировался по команде DELETE, %Action вернет значение DELETE.

%Action

Область видимости

Триггер

Возвращаемое значение

DELETE, INSERT или UPDATE

Пример

Код шаблона

Результат

%Action

DELETE


%Actions

Возвращает список действий, выполненных до или после активизации триггера. Если триггер является многофункциональным (например CREATE TRIGGER trigger_name ON table FOR INSERT, UPDATE, DELETE ...), макрос объявляет все действия.

%Actions(<separator>)

Область видимости

Триггер

Возвращаемое значение

DELETE, INSERT и/или UPDATE

Пример

Код шаблона

Результат

%Actions (",")

DELETE,DELETE


%And

Позволяет комбинировать булевы выражения для создания более сложных выражений. %And выполняет логическое "И" с булевыми предикатами, определяемыми <macro code1> и <macro code2>. Например, код %If{%And(%AttIsFK,%AttIsRolenamed)...} позволяет выполнять дополнительные действия, если данный атрибут является внешним ключом и имеет ролевое имя. Для того, чтобы удовлетворить требованиям выполнения %And, оба элемента должны иметь значение "TRUE".

%And(<macro code1>,<macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE


%AttDatatype

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

%AttDatatype

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Тип данных атрибута

Пример

Код шаблона

Результат

%ForEachAtt () 
{%AttName -> %AttDatatype}

Master-number -> int

Movie-copy-number -> int

General-condition -> varchar(10)


%AttDef

Возвращает определение атрибута

%AttDef

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Определение атрибута

Пример

Код шаблона

Результат

/*Если текущий атрибут - master_number, то*/ %AttDef

Уникальный идентификатор фильма


%AttDefault

Возвращает имя, присвоенное атрибуту по умолчанию.

%AttDefault

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Имя, присвоенное атрибуту по умолчанию.

Пример

Код шаблона

Результат

%AttDefault

SPACES


%AttDomain

Возвращает имя домена, присвоенное атрибуту.

%AttDomain

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Имя домена

Пример

Код шаблона

Результат

/*Если текущий атрибут cust_phone, то*/
%AttDomain

PHONE NUMBER


%AttFieldName

Возвращает имя столбца, связанного с текущим атрибутом.

%AttFieldName

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Имя столбца

Пример

Код шаблона

Результат

/*Если текущий атрибут renting-customer, то*/
%AttFieldName

renting_customer


%AttFieldWidth

Возвращает длину типа данных атрибута

%AttFieldName

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Число

Пример

Код шаблона

Результат

/*Для типа данных varchar (50)*/
%AttFieldWidth

50


%AttId

Возвращает атрибут ID.

%AttId

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Целое


%AttIsFK

Булев предикат, позволяющий вам определять, является текущий атрибут членом внешнего ключа или нет.

%AttIsFK

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

TRUE/FALSE

Пример

Код шаблона

Результат

%ForEachAtt() {
%If{%AttIsFK}
%AttName}

Master-number movie-copy-number


%AttIsRolenamed

Булев предикат, позволяющий вам определить, имеет ли текущий атрибут ролевое имя. Дополнительная информация приведена в "%AttIsFK".

%AttIsRolenamed

Область видимости

%ForEachAtt, % ForEachFKAtt, %If

Возвращаемое значение

TRUE/FALSE


%AttIsPK

Булев предикат, позволяющий вам определить, состоит ли текущий атрибут в первичном ключе. Дополнительная информация приведена в "%AttIsFK".

%AttIsPK

Область видимости

%ForEachAtt, % ForEachFKAtt, %If

Возвращаемое значение

TRUE/FALSE


%AttName

Возвращает логическое имя текущего атрибута.

%AttName

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Имя атрибута

Пример

Код шаблона

Результат

/*Если текущий атрибут master-number, то*/
%AttName

master-number


%AttNullOption

Возвращает признак NULL/NOT NULL текущего атрибута.

%AttNullOption

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

NULL/NOT NULL


%AttPhysDatatype

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

%AttPhysDatatype

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

Тип данных

Пример

Код шаблона

Результат

/*Если текущий атрибут master-number, то*/
%AttPhysDatatype

Int


%Atts

Перечисляет все атрибуты сущности (таблицы) для которой создается триггер, выполняя определенную функцию для каждого атрибута.

%Atts(<separator>,<action>,<prefix>)

Область видимости

Триггер

Возвращаемое значение

Список действий и атрибутов

Пример

Код шаблона

Результат

%Atts (",", update, %Parent)

Update (MOVIE_COPY.master_number),

Update (MOVIE_COPY.master_copy_number)


%AttValidation

Возвращает название правила проверки (validation name) данного атрибута.

%AttValidation

Область видимости

%ForEachAtt, % ForEachFKAtt

Возвращаемое значение

название правила проверки (validation name).

Пример

Код шаблона

Результат

/*Если текущий атрибут due_date, то*/ %AttValidation

DUE_DATE_RULE


%Cardinality

Возвращает тип отношений:

  • <nothing> = 1:0,1, или более
  • Р = 1:1 или более
  • Z = 1:0 или 1
  • n = 1:n, где n - целое
%Cardinality

Область видимости

RI или Переопределение отношений

Возвращаемое значение

<ничего>, P, Z, <любое целое>


%Child

Возвращает физическое имя таблицы дочерней сущности в отношении.

%Child

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имя таблицы.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%Child 

MOVIE_RENTAL_RECORD


%ChildAtts

Перечисляет все атрибуты дочерней сущности в отношении и выполняет над каждым указанные действия.

%ChildAtts(<separator>,<action>, <prefix>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Названия атрибутов и действия.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildAtts(" or ", update)

Update (movie_copy_number) or

update (master_number) or

...


%ChildFK

Перечисляет внешние ключи дочерней сущности в отношении и выполняет над каждым указанные действия.

%ChildFK(<separator>,<action>,<prefix>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена атрибутов и действия

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildFK(" or ", update)

update (master_number) or

update (movie_copy_number)


%ChildFKDecl

Перечисляет внешние ключи дочерней сущности в отношении, а затем их типы данных.

%ChildFKDecl (<old prefix>,<new prefix >, <separator>>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена атрибутов FK и типы данных

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildFKDecl(,@ins_,", ")

@ins_master_number int,
@ins_movie_copy_number int


%ChildNK

Перечисляет неключевые элементы дочерней сущности и выполняет указанные действия с каждым из них.

%ChildNK(<separator>,<action>,<prefix>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена неключевых атрибутов и действия

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildNK(" or ", update, @)

update (@general_condition)


%ChildNKDecl

Перечисляет неключевые элементы дочерней сущности в отношении, а затем их типы данных.

%ChildNKDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена неключевых атрибутов и типы данных

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildNKDecl(,@ins_,", ")

@ins_general_condition varchar(10)


%ChildParamDecl

Перечисляет все атрибуты дочерней сущности в отношении, а затем их типы данных. Это полезно при объявлении параметров хранимых процедур.

%ChildParamDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена атрибутов и типы данных

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildParamDecl(,@ins_,", ")

@ins_master_number int,
@ins_movie_copy_number int, @ins_general_condition
varchar (10),


%ChildFK

Перечисляет элементы первичного ключа дочерней сущности в отношении и выполняет с каждым указанные действия.

%ChildPK(<separator>,<action>, <prefix>)

Область видимости

RI или Переопределение отношений.

Возвращаемое значение

Неключевые имена атрибутов и действия.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildPK(" or ", update,@)

update (@movie_copy_number) or
update (@master_number)


%ChildPKDecl

Перечисляет первичные ключевые элементы дочерней сущности в отношении, а затем их типы данных.

%ChildPKDecl (<old prefix>,<new prefix>, <separator>, <attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена атрибутов PK и типы данных

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ChildPKDecl(,@ins_,", ")

@ins_master_number int,
@ins_movie_copy_number int,


%Concat

Добавляет <value 2> в конец <value 1>, результатом является объединенная строка.

%Concat(<value1>, <value2>)

Область видимости

Глобально

Возвращаемое значение

Строка


%CurrentDatabase

Возвращает имя базы данных, используемой при генерации скрипта (в виде значения вводимого в диалоговом окне Connection <DB>).

%CurrentDatabase

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

/*При генерации на БД "Testdb"*/
%CurrentDatabase

Testdb


%CurrentFile

Возвращает имя ERwin файла, из которого был сгенерирован сценарий.

%CurrentFile

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%CurrentFile

C:\MYFILES\MOVIES.ER1


%CurrentServer

Возвращает имя целевого сервера, использованного при генерации скрипта (в виде значения вводимого в диалоговом окне Connection <DB>).

%CurrentServer

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%CurrentServer

SQL6


%CurrentUser

Возвращает имя пользователя, сгенерировавшего скрипта (в виде значения вводимого в диалоговом окне Connection <DB>).

%CurrentUser

Область видимости

Глобально

Возвращаемое значение

Cтрока

Пример

Код шаблона

Результат

%CurrentUser

Ssmith


%CustomTriggerDefaultBody

Вставляет текст из шаблона триггера в триггер в развернутой форме.

%CustomTriggerDefaultBody

Область видимости

Триггер.

Возвращаемое значение

Содержимое шаблона CustomTriggerDefaultBody.


%CustomTriggerDefaultFooter

Вставляет текст из шаблона нижнего колонтитула в триггер в развернутой форме.

%CustomTriggerDefaultFooter

Область видимости

Триггер.

Возвращаемое значение

Содержимое шаблона CustomTriggerDefaultFooter.


%CustomTriggerDefaultHeader

Вставляет текст из шаблона заголовка в триггер в развернутой форме.

%CustomTriggerDefaultHeader

Область видимости

Триггер.

Возвращаемое значение

Содержимое шаблона CustomTriggerDefaultHeader.


%DatatypeName

Возвращает имя типа данных

%DatatypeName()

Область видимости

Глобально

Возвращаемое значение

Тип данных

Пример

Код шаблона

Результат

%ForEachAtt(%Tablename,", ") {%DatatypeName(%AttPhysDatatype)}

Varchar


%DatatypeScale

Для десятичных типов данных, %DatatypeScale возвращает число десятичных знаков (значение после десятичной запятой).

%DatatypeScale()

Область видимости

Глобально

Возвращаемое значение

Целое

Пример

Код шаблона

Результат

/*Например, для decimal(10,2)*/
%DatatypeScale()

2


%DatatypeWidth

Возвращает ширину поля описанную в типе данных.

%DatatypeWidth()

Область видимости

Глобально

Возвращаемое значение

Целое

Пример

Код шаблона

Результат

/* Например, для decimal(10,2)*/
%DatatypeWidth()

10


%Datetime

Возвращает текущие дату и время.

%Datetime

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%Datetime

Wed Feb 17 12:56:22 1998


%DBMS

Возвращает имя базы данных.

%DBMS

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%DBMS

ORACLE


%DBMSDelim

Возвращает оператор разделитель для выбранной СУБД.

%DBMSDelim

Область видимости

Глобально

Возвращаемое значение

, или ; или другой разделитель.


%Decl

Объявляет <переменную> и, необязательно, инициализирует ее с помощью <initial value>. Например, если вы использовали оператор %Decl(var1,0), то это значит, что объявляется переменная var1, которая инициализируется значением 0. Возвращаемое значение не генерируется.

%Decl(<variable>,<initial value>)

Область видимости

Глобально

Возвращаемое значение

Нет

Пример

Код шаблона

Результат

%Decl(var1,0)

Внутренне, var1 присваивается значение 0.


%DefaultName

Возвращает имя по умолчанию.

%DefaultName

Область видимости

%ForEachDefault

Возвращаемое значение

Имя по умолчанию.

Пример

Код шаблона

Результат

%ForEachDefault(", " ){%DefaultName}

SPACES, PERSON-NAME, ADDRESS


%DefaultValue

Возвращает значение по умолчанию.

%DefaultValue(<default name> или %DefaultValue

Область видимости

Глобально (при использовании аргумента - <default name>), либо %ForEachDefault (без аргумента).

Возвращаемое значение

Значение по умолчанию.

Пример

Код шаблона

Результат

%ForEachDefault(", " ){%DefaultValue}

NEW RELEASE, COMEDY, DRAMA, CHILDREN, HORROR


%DomainDatatype

Возвращает физический тип данных домена.

%DomainDatatype(<domain name>) или %DomainDatatype

Область видимости

Глобально (при использовании аргумента - <domain name>), либо %ForEachDomain.

Возвращаемое значение

Значение домена по умолчанию.

Пример

Код шаблона

Результат

%ForEachDomain(", ") {%DomainDatatype}

varchar(10), int, char


%DomainDef

Возвращает имя, по умолчанию присвоенное домену.

%DomainDef(<domain name>) или %DomainDef

Область видимости

Глобально (при использовании аргумента <domain name>), либо %ForEachDomain.

Возвращаемое значение

Значение домена по умолчанию.

Пример

Код шаблона

Результат

%ForEachDomain(", ") { %DomainDef}

NEW RELEASE


%DomainName

Возвращает имя домена.

%DomainName

Область видимости

%ForEachDomain

Возвращаемое значение

Имя домена

Пример

Код шаблона

Результат

%ForEachDomain{%DomainName}

PERSON NAME
ADDRESS


%DomainNullOption

Возвращает информацию о том какие NULL атрибуты, будут иметь столбцы созданные с использованием домена <domain name>.

%DomainNullOption (<domain name>) или %DomainNullOption

Область видимости

Глобально (при использовании аргумента <domain name>), либо %ForEachDomain.

Возвращаемое значение

NULL, NOT NULL, IDENTITY, WITH NULL или NOT NULL WITH DEFAULT


%DomainValidation

Возвращает название правила проверки (validation name) присоединенного к домену.

%DomainValidation(<domain name>) или %DomainValidation

Область видимости

Глобально (при использовании аргумента <domain name>), либо %ForEachDomain.

Возвращаемое значение

название правила проверки.

Пример

Код шаблона

Результат

%ForEachDomain {%DomainValidation}

IS VALID CUSTOMER,
DUE DATE


%EntityId

Возвращает идентификатор сущности или таблицы

%EntityId (<entity or tablename>)

Область видимости

RI, Переопределение отношений или

Триггер

Возвращаемое значение

Целое

Пример

Код шаблона

Результат

%EntityId(%Parent)

1234


%EntityName

Возвращает имя сущности или таблицы

%EntityName (<entity or tablename>)

Область видимости

RI, Переопределение отношений или Триггер

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%EntityName(%Parent)

MOVIE-COPY


%File

Выполняет программу макроса, заключенного в фигурные скобки и записывает результат в данный файл. Этот макрос предусматривает работу с учетом ограничения Windows 3.х на размер строки в 64 кб.

%File (<filename>){<macro code>}

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%File (C:\erw\myfile.tst)
{%ForEachAtt(Parent, ", ") (%AttFieldName ...}

<создает файл и включает указанную информацию>


%Fire

Определяет, когда запускается триггер. Доступно только для INFORMIX, ORACLE7 и Rdb.

%Fire

Область видимости

Триггер.

Возвращаемое значение

BEFORE или AFTER

Пример

Код шаблона

Результат

%Fire

BEFORE


%ForEachAtt

Раскрывает макрос для каждого атрибута данной таблицы.

%ForEachAtt(<table name>,<separator>) {<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого атрибута данной таблицы.

Пример

Код шаблона

Результат

%ForEachAtt(%Parent, ", ")
{%AttFieldName}

master_number,
movie_copy_number,
general_condition


%ForEachChildRel

Раскрывает <relationship code> (код отношений) для каждого отношения в котором триггерная сущность является дочерней.

%ForEachChildRel(<separator>) {<relationship code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого отношения.

Пример

Код шаблона

Результат

%ForEachChildRel("go") 
{insert %Parent values(%ParentAtts(", ",,@ins_) }

insert MOVIE_COPY values(@ins_master_number, @ins_movie_copy_number, @ins_general_condition)
go


%ForEachDefault

Раскрывает макрос для всех атрибутов, имеющих default значения.

%ForEachDefault (<separator>) {<macro code>}

Область видимости

Глобально

Возвращаемое значение

Результат <macro code> для всех атрибутов имеющих default значения.

Пример

Код шаблона

Результат

%ForEachDefault () {%DefaultName }

FILL_WITH_SPACES

SET_TO_NULL

SET_TO_ZERO


%ForEachDomain

Раскрывает макрос для всех доменов, которые реализованы как пользовательские типы данных.

%ForEachDomain(<separator>){<macro code>}

Область видимости

Глобально

Возвращаемое значение

Результат <macro code>

Пример

Код шаблона

Результат

%ForEachDomain(","){%DomainName }

ADDRESS, PERSON NAME


%ForEachEntity

Раскрывает макрос для всех сущностей текущей предметной области (subject area).

%ForEachEntity(<separator>) {<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждой сущности.

Пример

Код шаблона

Результат

%ForEachEntity() {%TableName}

MOVIE_COPY

MOVIE_RENTAL_RECOR


%ForEachFKAtt

Раскрывает макрос для каждого атрибута внешнего ключа.

%ForEachFKAtt(<separator>){<macro code>}

Область видимости

RI или Переопределение отношений.

Возвращаемое значение

Результат <macro code> для каждого атрибута FK.

Пример

Код шаблона

Результат

%ForEachFKAtt(", ")
{%AttFieldName}

Master_number, movie_copy_number


%ForEachIndex

Раскрывает макрос для всех индексов в текущей предметной области. <table> используется по умолчанию для таблицы в текущей области видимости; может использоваться для присвоения имени другой таблице (%Parent, MOVIE_COPY). <type> фильтрует тип индекса (AK, IE, IF, PK, AK1, IE2 и т.д.). По умолчанию для всех.

%ForEachIndex ([<table>],[<type>],[<name>],[<separator>]){<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого индекса

Пример

Код шаблона

Результат

%ForEachIndex { %IndexName
%IndexType}

XPKMOVIE_COPY PK


%ForEachIndexMem

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

%ForEachIndexMem ([<sequence>],[<separator>]) {<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого члена индекса.

Пример

Код шаблона

Результат

%ForEachIndex {%ForEachIndexMem() {%AddDatatype }}

int
int
varchar (10)


%ForEachKey

Раскрывает макрос для всех альтернативных ключей и неуникальных индексов (IE) в текущей предметной области.

%ForEachKey ([<table>],[<type>],[<separator>]) {<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого ключа.

Пример

Код шаблона

Результат

%ForEachKey (%Parent,,,) {%KeyName}

AK1,
IE1


%ForEachKeyMem

Раскрывает макрос для всех членов ключа.

%ForEachKeyMem ([<sequence>],[<separator>]) {<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого члена индекса.

Пример

Код шаблона

Результат

%ForEachKey {%ForEachKeyMem() {%AttName}}

renting-customer


%ForEachParentRel

Раскрывает <relationship code> для каждого отношения, где сущность, для которой создаётся триггер, является родительской.

%ForEachParentRel(<separator>){<relationship code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого отношения.

Пример

Код шаблона

Результат

%ForEachParentRel () 
{insert %Parent values (%ParentAtts(",",,@ins_)}

insert MOVIE_COPY values(@ins_master_number, @ins_movie_copy_number, @ins_general_condition)


%ForEachValidValue

Раскрывает макрос для всех допустимых значений текущего правила (validation).

%ForEachValidValue(<separator>) {<macro code>}

Область видимости

Триггер., %ForEachValidation

Возвращаемое значение

Результат <macro code> для каждого допустимого значения.

Пример

Код шаблона

Результат

%ForEachValidValue(","{%ValidValue =>%ValidValueDef }

N =>New (recent release)
S =>Standard release
O =>Old movie
C =>Classic


%ForEachValidation

Раскрывает макрос для всех правил.

%ForEachValidation(<separator>){<macro code>}

Область видимости

Триггер.

Возвращаемое значение

Результат <macro code> для каждого правила.

Пример

Код шаблона

Результат

%ForEachValidation () {%Validation Name }

Due Date Validation


%If %Else

Условное выполнение %If<macro code1>, если логическое выражение имеет значение "true", либо %Else<macro code2>, если логическое выражение имеет значение "false". Оператор %Else - необязателен.

%If (<predicate>) {<macro code1>} %Else {<macro code2>}

Область видимости

Глобально

Возвращаемое значение

Результат <macro code1> каждый раз, если значение <predicate> = TRUE.

Результат <macro code2> каждый раз, если значение <predicate> = FALSE.

Пример

Код шаблона

Результат

%ForEachAtt() { %If(%AttIsPK) {%AttName -> PK}}

master-number -> PK
movie_copy_number -> PK


%Include

Позволяет вам включить текст макроса при работе с несколькими файлами или шаблонами триггеров.

%Include ("<path name>")
%Include (<trigger template name>)

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%Include("<c:\er\trg.tdl")

<Все программы, включенные в файл c:\er\trg.tdl>


%IndexName

Возвращает имя индекса.

%IndexName

Область видимости

Триггер, %ForEachIndex, %ForEachIndexMem

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%IndexName

XPK_MOVIE_COPY


%IndexType

Возвращает тип индекса.

%IndexType

Область видимости

Триггер., %ForEachIndex, %ForEachIndexMem

Возвращаемое значение

FK, PK, AK, IE1 и т.д.

Пример

Код шаблона

Результат

%IndexType

PK


%JoinFKPK

Позволяет произвести соединение по внешнему ключу дочерней сущности и первичному ключу родительской сущности исходя из реляционной связи (Join между FK дочерней и PK родительской сущностей).

%JoinFKPK ([<child table>, <parent table>, <comparison op>,<separator>)

Область видимости

RI или Переопределение отношений, оператор WHERE или JOIN

Возвращаемое значение

Программа, поддерживаемая сравнением значений PK и FK в отношении.

Пример

Код шаблона

Результат

%JoinFKPK(%Child,deleted,"<>"," or")

MOVIE_RENTAL_RECOR.master_number<> deleted.master_number or

MOVIE_RENTAL_RECOR.movie_copy_number <> deleted.movie_copy _number


%JoinPKPK

Позволяет произвести соединение по первичным ключам двух сущностей.

%JoinPKPK (<table>, <correlation>, <comparison op>,<separator>)

Область видимости

RI, Переопределение отношений, Триггер, условный оператор поиска WHERE

Возвращаемое значение

Текст, производящий сравнение значений PK из двух таблиц.

Пример

Код шаблона

Результат

%JoinPKPK(%Child,ins,"<>"," or")

MOVIE_RENTAL_RECOR.renting_customer <> ins.renting_customer or

MOVIE_RENTAL_RECOR.master_number <> deleted.master_number or ...


%KeyName

Возвращает имя ключа.

%KeyName

Область видимости

Триггер., %ForEachKey, % ForEachKeyMem

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%KeyName

AK1


%Len

Возвращает длину <macro code>.

%Len(<macro code>)

Область видимости

Глобально

Возвращаемое значение

Целое

Пример

Код шаблона

Результат

string1='12345'
%Len(%:string1)

5


%Lower

Преобразует результат <macro code> в нижний регистр.

%Lower (<macro code>}

Область видимости

Глобально

Возвращаемое значение

Строка в нижнем регистре.

Пример

Код шаблона

Результат

string1='movie' 
%Lower(%:string1)

movie


%Max

Сравнивает <value1> и <value2> и возвращает большее.

%Max(<value1>,<value2>)

Область видимости

Глобально

Возвращаемое значение

Большее значение из сравниваемых.

Пример

Код шаблона

Результат

var1=8
var2=5
%Max(var1, var2)

8


%Min

Сравнивает <value1> и <value2> и возвращает меньшее.

%Min(<value1>,<value2>)

Область видимости

Глобально

Возвращаемое значение

Меньшее значение из сравниваемых

Пример

Код шаблона

Результат

var1=8
var2=5
%Min(var1, var2)

5


%NK

Перечисляет все неключевые атрибуты триггерной сущности и выполняет определенные действия с каждым.

%NK (<separator>,<action>,<prefix>)

Область видимости

Триггер.

Возвращаемое значение

Атрибут и действие

Пример

Код шаблона

Результат

%NK(" or, update,%Parent)

update(MOVIE_COPY. general_condition)

or...


%NKDecl

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

%NKDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>)

Область видимости

Триггер.

Возвращаемое значение

Имена и типы данных атрибутов

Пример

Код шаблона

Результат

%NKDecl(,@ins_,", ")

@ins_general_condition varchar(10)


%Not

В булевом выражении, определяемом в <macro code>, %Not осуществляет "логическое НЕ". Позволяет комбинировать булевы выражения для создания более сложных выражений.

%Not (<macro code>)

Область видимости

Глобально, %If

Возвращаемое значение

Результат макроса.

Пример

Код шаблона

Результат

%ForEachAtt() {%If(%Not(%==(%AttDatatype, int)))
{%AttName}}

general-condition


%NotnullFK

Сравнивает внешний ключ дочерней сущности <child table> из отношения с <null expression>. Этот макрос выполняется, только если отношение не определяющее и допустимы null значения.

%NotnullFK(<child table>, <not null expression>,<prefix>,<separator>)

Область видимости

RI или Переопределение отношений, оператор WHERE

Возвращаемое значение

NULL выражение для каждого FK, допускающего нулевые значения.

Пример

Код шаблона

Результат

where %NotnullFK(,"is null",," or")

where master_number is null
or movie_copy_number is null


%Or

В булевых выражениях, определяемых в <macro code1> и <macro code2>, %Or осуществляет "логическое ИЛИ". Позволяет комбинировать булевы выражения для создания более сложных выражений. Например, %If{%Or(%AttisFK,%AttIsRolenamed)...} позволяет выполнять дополнительные действия, если данный атрибут является внешним ключом или имеет ролевое имя. Макрос выполняется, если любой из элементов имеет значение "TRUE".

%Or (<macro code1>,<macro code2>)

Область видимости

Глобально, %If

Возвращаемое значение

TRUE/FALSE

Пример

Код шаблона

Результат

%If(%Or(%AttIsFK,%AttIsRolenamed)) {%AttName}

master_copy_number


%ParamDecl

Перечисляет все атрибуты триггерной сущности, а затем их типы данных.

%ParamDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>)

Область видимости

Триггер.

Возвращаемое значение

Атрибуты и типы данных.

Пример

Код шаблона

Результат

%ParamDecl(@ins_,", ")

@ins_master_number int,
@ins_movie_copy_number int,
@ins_general_condition varchar(10)


%ParamPass

Присваивает значения параметрам процедур, определенным в <old prefix> и/или в <new prefix>, для всех атрибутов триггерной сущности. Доступен только для Ingres.

%ParamDecl(<old prefix>,<new prefix>,<param/value separator>,<param separator>)

Область видимости

Триггер.

Возвращаемое значение

Список параметров для Ingres.

Пример

Код шаблона

Результат

%ParamPass(,new," = ")

master-number = new.master_number


%Parent

Возвращает физическое имя таблицы родительской сущности из реляционной связи.

%Parent

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%Parent

MOVIE_COPY


%ParentAtt

Раскрывает любой макрос атрибутов (например, %AttFieldName, %AttDatatype) для первичного родительского ключевого атрибута, от которого мигрировал текущий атрибут.

%ParentAtt(<attribute macro>)

Область видимости

%ForEachAtt, %ForEachFKAtt

Возвращаемое значение

Результат <attribute macro>

Пример

Код шаблона

Результат

%ForEachAtt() {%ParentAtt%AttFieldName)}

master_number


%ParentAtts

Перечисляет все атрибуты родительской сущности в отношении, и выполняет с каждым указанные действия.

%ParentAtts(<separator>,<action>,<prefix>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Атрибуты и действия

Пример

Код шаблона

Результат

%ParentAtts(" or ",update,%Parent)

update(MOVIE.master_number) or
update(MOVIE.customer_number)...


%ParentNK

Перечисляет неключевые атрибуты родительской сущности в отношении и выполняет с каждым указанные действия.

%ParentNK(<separator>,<action>,<prefix>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Атрибуты и действия

Пример

Код шаблона

Результат

%ParentNK(" or ",update,%Parent)

update(MOVIE.movie_name) or
update(MOVIE.movie_rating)or
update(MOVIE.movie_year)


%ParentNKDecl

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

%ParentNKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Атрибуты и типы данных FK.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ParentNKDecl(,@ins_,", ")

@ins_movie_name varchar(50),
@ins_movie_rating varchar(5),
@ins_movie_rental_rate money


%ParentParamDecl

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

%ParentParamDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Атрибуты и типы данных.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ParentParamDecl(,@ins_,", ")

@ins_movie_name varchar(50),
@ins_movie_rating varchar(5),
@ins_movie_rental_rate money


%ParentPK

Перечисляет элементы первичного ключа родительской сущности в отношении и выполняет с ними указанные действия.

%ParentPK(<separator>,<action>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Атрибуты первичных ключей и действия.

Пример

Код шаблона

Результат

%ParentPK

Update(MOVIE_COPY.master_number)
Update(MOVIE_COPY.movie_copy_number)


%ParentPKDecl

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

%ParentPKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имена атрибутов первичных ключей и типы данных.

Пример

Код шаблона

Результат

/*Если текущее отношение <is in stock as>, то*/
%ParentPKDecl(,@ins_)

@ins_master_number varchar(10),
@ins_movie_copy_number varchar(10),
@ins_customer_number varchar(10)


%PhysRelName

Возвращает физическое имя отношения.

%PhysRelName

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%PhysRelName

is_rented_under


%PK

Перечисляет элементы первичного ключа триггерной сущности и выполняет с ними указанные действия.

%PK(<separator>,<action>,<prefix>)

Область видимости

Триггер.

Возвращаемое значение

Первичные ключевые атрибуты и действия.

Пример

Код шаблона

Результат

%PK(,update,%Parent)

update(MOVIE_COPY.master_number)
update(MOVIE_COPY.movie_copy_number)


%PKDecl

Перечисляет элементы первичного ключа сущности, а затем - их типы данных.

%PKDecl (<old prefix>,<new prefix>,<separator>>,<attribute/type separator>))

Область видимости

Триггер.

Возвращаемое значение

Имена первичных ключевых атрибутов и типы данных.

Пример

Код шаблона

Результат

%PKDecl(,@ins_)

@ins_master_number varchar(10),
@ins_movie_copy_number varchar(10)


%RefClause

Создает описание Reference, исходя из информации OLD и NEW, добавленной в Редакторе Триггерного Объекта. Доступен только для INFORMIX, Ingres, ORACLE7 и Rdb.

%RefClause

Область видимости

Триггер.

Возвращаемое значение

Оператор ссылки

Пример

Код шаблона

Результат

%RefClause

REFERENCES NEW as inserted OLD as Deleted


%RelId

Возвращает идентификатор отношения.

%RelId

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Целое


%RelIsNonull

Проверяет отношения на наличие нулевых выражений и возвращает "true", если null - недопустим, и "false", если допустим.

%RelIsNonull

Область видимости

RI или Переопределение отношений, %If

Возвращаемое значение

TRUE/FALSE


%RelRI

Возвращает тип отношения ссылочной целостности ( CASCADE, RESTRICT...) для указанного действия <action> (insert, update, delete) и <RI type> (родительский или дочерний).

%RelRI(<action>,<RI type>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

CASCADE, RESTRICT, SET NULL, SET DEFAULT или NONE

Пример

Код шаблона

Результат

%RelRI(Update, Child)

CASCADE


%RelTemplate

Раскрывает шаблон, присоединенный к текущему отношению. Если никакой макрос не присвоен, раскрывается шаблон ссылочной целостности диаграммы по умолчанию.

%RelTemplate

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Раскрывает фрагмент программы отношения в соответствии с типом триггера.


%RelType

Возвращает тип отношения. Допустимые значения типа отношения и их определения включают: RT_ID (определено), RT_NI (не определено), RT_SC (субтип) или RT_MM (многие-ко-многим).

%RelType

Область видимости

RI или Переопределение отношений

Возвращаемое значение

RT_ID, RT_NI, RT_SC или RT_MM

Пример

Код шаблона

Результат

%RelType

RT_ID


%Scope

Возвращает определение того, как выполняется триггер. Доступен только для ORACLE7.

%Scope

Область видимости

Триггер.

Возвращаемое значение

FOR EACH ROW или FOR EACH TABLE

Пример

Код шаблона

Результат

%Scope

FOR EACH ROW


%SetFK

Перечисляет внешние ключевые элементы дочерней сущности в отношении и присваивает каждому члену указанное значение.

%SetFK (<child table>,<value>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имя и значение атрибута внешнего ключа

Пример

Код шаблона

Результат

%SetFK(%Child,NULL)

MOVIE_RENTAL_RECOR.master_number = NULL
MOVIE_RENTAL_RECOR.movie_copy_number = NULL
MOVIE_RENTAL_RECOR.customer_number = NULL
MOVIE_RENTAL_RECOR.rental_number = NULL


%SetPK

Перечисляет первичные ключевые элементы указанной таблицы и присваивает каждому члену указанное значение.

%SetPK(<table>,<value>)

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Имя и значение атрибута первичного ключа.

Пример

Код шаблона

Результат

%SetPK(%Parent,0)

MOVIE_COPY.master_number = 0
MOVIE_COPY.movie_copy_number = 0


%Substitute

Заменяет строку <pattern> в строке <value> строкой <substitute>.

%Substitute(<value>,<pattern>,<substitute>)

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

/*Если имя дочерней таблицы movie_copy_number*/
%Substitute(%Child,movie,ins_movie

ins_movie_copy_number


%Substr

Возвращает подстроку при раскрытии данного <macro code>. <length> (длина) необязательна.

%Substr(<macro code>,<initial pos>,<length>)

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%Substr(macro,1,3)

Mac


%Switch

Сравнивает аргумент с указанной альтернативой. ERwin раскрывает макрос в соответствии с совпавшей альтернативой. Если ни одного совпадения не происходит, ERwin выполняет макрос по умолчанию.

 

Область видимости

Глобально

Возвращаемое значение

Значение макроса

Пример

Код шаблона

Результат

*/Если %TableName - MOVIE_COPY*/
%Switch (%TableName) {%Choose(MOVIE_COPY) {%FK}
%Choose(MOVIE_RENTAL_RECOR){%PK}
%Default{%PK}}

master_number


%TableName

Возвращает физическое имя таблицы триггерного объекта.

%TableName

Область видимости

Триггер.

Возвращаемое значение

Имя таблицы

Пример

Код шаблона

Результат

%TableName

MOVIE_COPY


%TemplateName

Возвращает имя шаблона триггера, хранимой процедуры или сценария.

%TemplateName

Область видимости

Триггер.

Возвращаемое значение

Имя шаблона

Пример

Код шаблона

Результат

%TemplateName

CHILD_DELETE_CASCADE


%TriggerName

Возвращает физическое имя триггера.

%TriggerName

Область видимости

Триггер.

Возвращаемое значение

Имя триггера

Пример

Код шаблона

Результат

%TriggerName

MOVIE_COPY_CHILD_DELETE_CASCADE


%TriggerRelRI

Булево выражение, имеющее значение "true", если данные триггер и отношение соответствуют данному действию <action>(Update/Delete/Insert), <RI type> (Child/Parent) и <integrity> (Cascade/Restrict/Set Null/Set Default).

%TriggerRelRI(<action>,<RI type>,<integrity>)

Область видимости

RI или Переопределение отношений, %If

Возвращаемое значение

TRUE/FALSE

Пример

Код шаблона

Результат

%ForEachChildRel() {%If(%TriggerRelRI(Update,Child,Cascade))
{%VerbPhrase Child Update Cascade}}

is rented under Child Update
Cascade


%UpdateChildFK

Перечисляет внешние ключевые элементы дочерней сущности в отношении и выполняет обновление с каждым членом. Доступно только для ORACLE7, SQL Server и SYBASE.

%UpdateChildFK()

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Значение и действие внешнего ключа

Пример

Код шаблона

Результат

%UpdateChildFK()

update(master_number) or
update(movie_copy_number)...


%UpdateParentPK

Перечисляет первичные ключевые элементы родительской сущности в отношении и выполняет обновление каждого члена. Доступно только для ORACLE7, SQL Server и SYBASE.

%UpdateParentPK()

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Значение и действие первичного ключа

Пример

Код шаблона

Результат

%UpdateParentPK()

Update(master_number)


%UpdatePK

Перечисляет первичные ключевые элементы триггерной сущности и выполняет обновление каждого члена. Доступно только для ORACLE7, SQL Server и SYBASE.

%UpdatePK()

Область видимости

Триггер.

Возвращаемое значение

Значение и действие первичного ключа

Пример

Код шаблона

Результат

%UpdatePK()

Update(master_number)
Update(movie_copy_number)


%Upper

Преобразует раскрытый <macro code> в верхний регистр.

%Upper (<macro code>)

Область видимости

Глобально

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%Upper(%EntityName)

MOVIE COPY


%ValidationHasValidValues

Булево выражение, позволяющее вам определять, имеет ли текущее допущение корректные значения.

% ValidationHasValidValues(<validation name>)

Область видимости

Глобально (с аргументом <validation name>) или %ForEachValidation, %If

Возвращаемое значение

TRUE/FALSE


%ValidationName

Возвращает название правила проверки допустимости.

%ValidationName

Область видимости

%ForEachValidation

Возвращаемое значение

Имя правила проверки допустимости

Пример

Код шаблона

Результат

%ValidationName

Due Date Validation


%ValidationRule

Возвращает правило проверки со стороны сервера.

%ValidationRule(<validation name>} или %ValidationRule

Область видимости

Глобально (с аргументом <validation name>) или %ForEachValidation

Возвращаемое значение

Строка правила проверки допустимости

Пример

Код шаблона

Результат

%ValidationRule
(Valid CustNumber)

@col BETWEEN 1000 AND 9999


%ValidValue

Возвращает допустимые значения данных

%ValidValue

Область видимости

%ForEachValidValue

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

%ValidValue

CHILDREN


%ValidValueDef

Возвращает определение допустимого значения.

%ValidValueDef

Область видимости

%ForEachValidValue

Возвращаемое значение

Строка

Пример

Код шаблона

Результат

/*Если допустимые значения: COMEDY, 
HORROR, DRAMA, NEW RELEASE и CHILDREN, 
определение одного из них может быть:*/
%ValidValueDef

A movie that is of interest to children.


%VerbPhrase

Возвращает сообщение об отношении.

%VerbPhrase

Область видимости

RI или Переопределение отношений

Возвращаемое значение

Сообщение об отношении

Пример

Код шаблона

Результат

%VerbPhrase

is rented under




Заголовок с заглавной буквы