Versant OQL Statement с арифметическим оператором - PullRequest
0 голосов
/ 09 июня 2010

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

Я пытаюсь построить что-то вроде этого:

SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0

Если я попробую этот оператор в Инспекторе объектов, я получу синтаксошибка рядом с '-'.

У кого-нибудь есть пример работающего VQL с таким утверждением?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 июня 2010

С C # и OQL вы должны убедиться, что вы выбрали правильный экстент класса. Это делается путем добавления суффикса «Экстент» к имени класса. Например, в классе Pet я бы идентифицировал всех питомцев с помощью «PetExtent» в строке OQL.

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

string query="SELECT * FROM PetExtent AS p WHERE p.Name = \"Ferris\" AND (p.age + 5) > 4";
IQueryResult result = scope.GetOqlQuery(query).Execute();

foreach (object o in result)
   Out(o.ToString());

Лучший способ протестировать OQL с привязкой Versant C # - это использовать OQL Query Browser, интегрированный в Visual Studio. Посмотрите раскрывающееся меню «Версант» в Visual Studio.

С наилучшими пожеланиями,

Derek

0 голосов
/ 09 июня 2010

Я не уверен, что Инспектор объектов будет знать синтаксис арифметического выражения.Однако в вашем коде вы должны ссылаться на полностью определенный класс.Тогда синтаксис, который вы используете, должен быть в порядке.

Запрос запроса = новый запрос (сеанс "выберите * из com.yourCompany.yourClass, где _qtyOrdered - _qtySent> 0");

Результат QueryResult = query.execute ();

Я только что попробовал это на одном из моих занятий, и он отлично работал.

Приветствия, -Роберт

...