2011-04-04 53 views
0

我有一個名爲DOCTYPES的Oracle關係表,列ID爲DOCTYPE,SUBTYPE。使用ora:使用XMLTable查看關係表作爲XML查詢

當我在Oracle SQL Developer中運行下面的語句

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW 
         return $i/SUBTYPE') 

我回來標籤之間的結果如預期。但是,當我運行下面的語句,我得到一個錯誤:

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW 
         return <SUBTYPE="{$i/SUBTYPE}"/>') 

LPX-00801:XQuery的語法錯誤,在 '='。我不明白爲什麼第二個聲明不起作用。

非常感謝您的幫助提前。

+0

我使用http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm中的示例作爲參考。我相信它應該起作用。 – L4zl0w 2011-04-04 21:21:25

回答

0

不知道Oracle將XQuery的是什麼,但撇號的聲明顯然有一個XQuery語法錯誤在「=」,作爲IMO被正確診斷。

這是因爲您打開直接元素構造函數,但等號不正確地跟在標記名稱後面。在直接元素構造函數中使用等號來分隔屬性名稱和屬性值。所以下面可能的工作:

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW 
         return <SUBTYPE name="{$i/SUBTYPE}"/>') 

爲規範,請參考3.7.1 Direct Element ConstructorsXQuery recommendation

+0

+1正確答案。 – 2011-04-05 20:34:34

-1

語法錯誤。

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW 
        return <SUBTYPE="{data($i/SUBTYPE)}"/>') 
+1

就'='語法錯誤而言,如果這比原始語言更好,那將是令人驚訝的。 – Gunther 2011-04-05 19:25:04

+0

正確,我錯過了那裏的屬性。 – L4zl0w 2011-04-05 22:20:52