Оператор NEWSESSION
Оператор NEWSESSION
- создание действия, которое выполняет другое действие в новой сессии.
Синтаксис
NEWSESSION [NEWSQL] [nestedBlock] action
где nestedBlock
имеет один из двух вариантов синтаксиса:
NESTED LOCAL
NESTED (propertyId1, ..., propertyIdN)
Описание
Оператор NEWSESSION
создает действие, которое выполняет другое действие в новой сессии.
При указании ключевого слова NESTED
в новой сессии будут видны изменения локальных свойств. При указании ключевого слова LOCAL
будут видны изменения всех локальных свойств, иначе указывается список тех локальных свойств, изменения которых будут видны в новой сессии. Также измене ния этих локальных свойств в новой сессии попадут в текущую сессию при применении изменений в новой сессии.
Параметры
-
NEWSQL
Ключевое слово, при указании которого будет создано новое sql-соединение. В этом случае указание блока с ключевым словом
NESTED
будет проигнорировано. -
LOCAL
Ключевое слово, при указании которого в новой сессии будут видны изменения всех локальных свойств.
-
propertyId1, ..., propertyIdN
Список локальных свойств, изменения которых будут видны в новой сессии. Каждый элемент списка должен являться идентификатором свойства.
-
action
Контекстно-зависимый оператор-действие, описывающий действие, которое должно быть выполнено в новой сессии.
Примеры
testNewSession () {
NEWSESSION {
NEW c = Currency {
name(c) <- 'USD';
code(c) <- 866;
}
APPLY;
}
// здесь новый объект класса Currency уже в базе данных
LOCAL local = BPSTRING[10] (Currency);
local(Currency c) <- 'Local';
NEWSESSION {
MESSAGE (GROUP SUM 1 IF local(Currency c) == 'Local'); // возвратит NULL
}
NEWSESSION NESTED (local) {
// возвратит кол-во объектов класса Currency
MESSAGE (GROUP SUM 1 IF local(Currency c) == 'Local');
}
NEWSESSION {
NEW s = Sku {
id(s) <- 1234;
name(s) <- 'New Sku';
SHOW sku OBJECTS s = s;
}
}
}