我有兩個表。我試圖加入他們,並通過在Oracle中使用SQL/XML(SQLX)來準備XML。這裏的問題是XMLELEMENT函數正在爲元素名稱使用硬編碼的值,但我希望將這些名稱作爲列數據。可能嗎?如何給列值作爲XML中的元素名稱
create table PRODUCTEDIT
(
PRODUCTEDIT_NUM NUMBER(12) primary key,
API_NAME VARCHAR2(255)
);
create table PRODUCTEDITPARAMETER
(
PRODUCTEDIT_NUM NUMBER(12) not null,
PARAMETER_SEQ NUMBER(9) not null,
PARAMETER_VALUE VARCHAR2(4000),
CONSTRAINT fk_producteditparameter
FOREIGN KEY (PRODUCTEDIT_NUM)
REFERENCES PRODUCTEDIT(PRODUCTEDIT_NUM)
);
第一張表中有2條記錄。
PRODUCTEDIT_NUM Api_Name
1 ModifyProd
2 CreateProd
記錄第二個表:
PRODUCTEDIT_NUM PARAMETER_SEQ PARAMETER_VALUE
1 1 10
1 2 Data
1 3 1
1 4 Data1
1 5 1
2 1 11
2 2 Voice
2 3 1
現在我想XMLOUTPUT象下面這樣:
<?xml version='1.0'?>
<ModifyProd>
<1>10</1>
<2>Data</2>
<3>1</3>
<4>Data1</4>
<5>1</5>
</ModifyProd>
<CreateProd>
<1>11</1>
<2>Voice</2>
<3>1</3>
</CreateProd>
在上面的XML,我們有XMLELEMENT名稱(ModifyProd,CreateProd,1,2-等等)來自表數據。我無法通過在oracle中使用SQLXML來實現這一點。
我在下面試過,但似乎沒有工作。 XMLELEMENT沒有像我傳遞的那樣來看待價值。
SELECT XMLROOT(
XMLELEMENT(d.api_name,
(SELECT XMLAGG(
XMLELEMENT(e.parameter_seq,e.parameter_value
)
)
FROM producteditparameter e
WHERE e.productedit_num = d.productedit_num
)
),version '1.0', standalone yes
)
FROM productedit d
請編輯您的問題提供更多的信息 - 表結構,預期產出,你至今嘗試過,爲什麼它是不正確的...... –
@AlexPoole是正確的......我們需要更多的細節想要你有什麼,你想要什麼.. – Cyryl1972
你的XML有問題,請參閱[XML元素](http://www.w3schools.com/Xml/xml_elements.asp):* XML命名規則**元素名字必須以字母或下劃線***開頭。即像「」這樣的元素是不允許的! –