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.

Comments (0)

Skip to main content