Condividi tramite


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 .