2012-11-05 52 views
0

我有一個名爲TBTASK結構表如下存儲在DB XMLREC柱如何在XQUERY子序列中使用order by子句?

PRIID CHARACTER(15) NOT NULL, 
BID CHARACTER(10) NOT NULL, 
REF CHARACTER(15) NOT NULL, 
TIME TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP, 
XMLREC XML NOT NULL 

XML作爲使用以下XQUERY如下

<Root><Code>6</Code><Id>4</Id><Number>999</Number></Root> 
<Root><Code>6</Code><Id>4</Id><Number>1001</Number></Root> 
<Root><Code>6</Code><Id>4</Id><Number>1002</Number></Root> 
<Root><Code>6</Code><Id>4</Id><Number>998</Number></Root> 

林爲geeting數據:

XQUERY 
let $str:= subsequence((db2-fn:sqlquery('SELECT XMLREC FROM LIS.TBTASK WHERE BID=1') 
    /Root[Code='6']),1,5)  
order by $str/Root/Number 
return ($str) 

但我沒有得到按NUMBER列的排序順序的結果(order by by NUMBER。

你能幫我解決這個問題嗎?

回答

0

這應該工作:

for $str in (db2-fn:sqlquery('SELECT XMLREC FROM LIS.TBTASK WHERE BID=1')/Root[Code='6']),1,5)  
order by xs:int($str/Number) 
return ($str) 

注意,你需要至少一個語句順序由是有用的。另外,你的路徑($ str/Root/Number)是錯誤的,因爲$ str已經在根節點上了。此外,我假設你想以數字方式排序而不是字符串,所以我添加了一個明確的類型轉換來使其工作。

+0

非常感謝Dirk ...... :) 它對我來說工作得很好。 – Puru