我正在使用Versant對象數據庫後端的C#項目,我試圖構建一個包含算術運算符的查詢。該文檔指出它受到支持,但缺乏任何示例。Versant OQL聲明與算術運算符
我試圖建立這樣的事情:
SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0
如果我嘗試在Object Inspector這個說法,我得到一個錯誤synthax附近的「 - 」。
任何人都有一個與這種聲明工作的VQL的例子?
感謝
我正在使用Versant對象數據庫後端的C#項目,我試圖構建一個包含算術運算符的查詢。該文檔指出它受到支持,但缺乏任何示例。Versant OQL聲明與算術運算符
我試圖建立這樣的事情:
SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0
如果我嘗試在Object Inspector這個說法,我得到一個錯誤synthax附近的「 - 」。
任何人都有一個與這種聲明工作的VQL的例子?
感謝
我不知道,在Object Inspector就知道了arithmtic表達式的語法。但是,在您的代碼中,您應該引用完全限定的類。那麼你使用的語法應該是非常好的。查詢查詢=新查詢(會話, 「select * from com.yourCompany.yourClass where _qtyOrdered - _qtySent> 0」);
QueryResult result = query.execute();
我剛剛在我的一個類上試過了,它工作正常。
乾杯, - 羅伯特
在C#和OQL你必須確保你選擇正確的類範圍。這是通過在類名稱中添加「Extent」後綴來完成的。例如,在我的Pet類中,我將在OQL字符串中標識所有具有「PetExtent」的寵物。
通過在下面的代碼中定義一個本地名字對象來在謂詞中訪問類成員。任何算術表達式都將由查詢引擎評估。
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 Menu下拉菜單。
最好的問候,
德里克
大量的測試看來,你是正確的後,對象檢查似乎並不能夠支持這一點。但問題就是那麼深。似乎C#類型的十進制在Versant中被奇怪地支持,並被轉換爲char數組。這解釋了我的錯誤。 感謝您的回答。 – Pascal 2010-06-09 13:56:58