DAX 2009, что нового во взаимодействии с БД?
Вообще-то, изменения между версиями можно характеризовать так:
- 3.0 -> 4.0 Платформенные (технологические) изменения, развитие функциональности
- 4.0 -> 5.0 (2009) Функциональные изменения, развитие платформенных решений
В данной статье посмотрим некоторые отличия во взаимодействии с базами данных.
Появилась поддержка сложных структур запросов, т.е. возможность создавать объединения не только типа родитель - наследник, но и более сложные, правда такие объединения можно делать только в структурах запросов.
Реализована поддержка union, правда не в коде X++, а только для структур запросов, например:
query = new Query();
query.queryType(QueryType::Union); // другим значением QueryType является "Join"
Появилась поддержка Inner join и outer join в UPDATE_RECORDSET, а также возможность возврата количества обработанных записей для UPDATE_RECORDSET и DELETE_FROM, например:
update_recordset batchJob setting
Status = BatchStatus::Canceled,
EndDateTime = thisDate,
Finishing = 1
where batchJob.Status == BatchStatus::Cancelling
notexists join batch
where (
(batch.Status == BatchStatus::Ready
|| batch.Status == BatchStatus::Executing
|| batch.Status == BatchStatus::Hold
|| batch.Status == BatchStatus::Cancelling)
&& batch.BatchJobId == batchJob.RecId
);
rowsUpdated = (batchJob.RowCount() > 0); // использование rowCount()
Реализована обработка исключений при дублировании уникального ключа, например:
Table t;
try
{
while select forupdate t
{
test.Field1 = ‘xyz’;
t.update();
}
}
catch ( Exception::DuplicateKeyException, t )
{
infolog(‘Запись уже существует‘ + t.Field1 );
}
С точки зрения обмена данными между клиентом, сервером приложений и базы данных изменения коснулись также RunBase (уменьшение трафика при инициализации и упаковке), NumberSequences и дисплей-методов. Улучшение работы с дисплей-методами подразумевает их расчет в пакетном режиме на сервере и сохранении результата на клиенте, это выгодно отличается от текущей реализации с последовательным расчетом и передачей с сервера на клиента каждого метода.
Данная статья подготовлена с помощью Windows Live Writer .