我正在开发一个使用Versant对象数据库后端的c#项目,并且我正在尝试构建一个包含算术运算符的查询。文档声明它是受支持的,但没有任何示例。
我正在尝试构建这样的东西:
SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0如果我在Object Inspector中尝试这个语句,我在'-‘附近得到一个synthax错误。
有没有使用这种语句的VQL的例子?
谢谢
发布于 2010-06-09 06:41:17
我不确定Object Inspector是否知道算术表达式的语法。但是,在您的代码中,您应该引用完全限定类。那么你使用的语法应该是完全正确的。
查询查询=新查询( session,"select * from com.yourCompany.yourClass where _qtyOrdered - _qtySent >0 ");
QueryResult结果= query.execute();
我刚刚在我的一个类上试用了它,它工作得很好。
干杯,-Robert
发布于 2010-06-09 12:19:55
对于C#和OQL,您必须确保选择正确的类范围。这是通过在类名中添加“扩展”后缀来实现的。例如,在我的Pet类中,我将在OQL字符串中使用"PetExtent“标识所有宠物。
通过在下面的代码中定义一个本地名字对象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());使用Versant的C#绑定测试OQL的最好方法是使用集成到Visual Studio中的OQL查询浏览器。查看Visual Studio中的Versant菜单下拉菜单。
诚挚的问候,
德里克
https://stackoverflow.com/questions/3000953
复制相似问题