2013-07-18 91 views
0

當我運行從Oracle表中獲取XML

SELECT XMLElement("product", 
        XMLAttributes(fp.col2 AS "attr2",fp.col4 as "attr4",fp.col5 as "attr5",fp.col6 as "attr6") 
        XMLElement(SELECT (XMLElement("dataset", 
            XMLAttributes(ds.col3 AS "attr3") 
            FROM Table2 ds 
            WHERE fp.col1 = ds.col1 and fp.col2 = ds.col2 and ds.col2='ABC'))) 
       ) 
FROM Table2 fp 
WHERE fp.col1 = 'XYZ' 

我得到錯誤

ORA-00917: missing comma 
00917. 00000 - "missing comma" 
*Cause:  
*Action: 
Error at Line: 5 Column: 18 

我無法理解爲什麼

我期待輸出像

<product> 
    <dataset></dataset> 
</product> 

也可以指點我的教程/其中xml從joiing多個表中生成的示例。我需要仔細看看語法。

大多數例子我搜索已經從單一的表(employee)

+0

對我來說似乎是一個錯誤...我是XMLAttribute,XMLElement等新手......我需要使用XMLAgg嗎?你可以給我鏈接到一個很好的教程...不尋找簡單的 – Lav

回答

1

---編輯生成的xml ---

我修改您的查詢。它應該工作:

SELECT XMLElement("product" 
    , XMLAttributes(fp.col2 AS "attr2",fp.col4 as "attr4",fp.col5 as "attr5",fp.col6 as "attr6") 
    , (
    SELECT XMLElement("dataset" 
     , XMLAttributes(ds.col3 AS "attr3") 
    ) 
    FROM Table2 ds 
    WHERE fp.col1 = ds.col1 and fp.col2 = ds.col2 and ds.col2='ABC' 
) 
) 
FROM Table2 fp 
WHERE fp.col1 = 'XYZ'; 

在查詢中有不必要的XMLElement條款(第二個)和子查詢中的逗號丟失之前。

+0

添加相同,仍然問題仍然存在...不知道如果我需要使用XMLAgg ...尋找更多的例子 – Lav

+0

感謝KPater87它現在的工作,我接受你的答案之前...你能指點我很好的教程...在哪裏我需要從父母的子元素加入不同的表....我需要創建更復雜的查詢有5個孩子和3個層次的嵌套 – Lav

+0

我不知道好教程。但是您應該先閱讀[documentation](http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb13gen.htm#ADXDB1620)。另外爲了創建大的查詢,WITH子句非常有用。祝你好運! – kpater87