2
我在Oracle中使用dbms.xmlgen
實用程序從保存到Oracle內存表的數據創建XML文檔。使用Oracle XMLgen Utility創建XML使用內存表數據
我的程序正在將數據保存在Oracle類型ITEM_ARRAY
中。這是ITEM_OBJECT
類型的表格。
最後的數據是在我的ITEM_ARRAY
。現在我想將這些數據轉換成XML。所以我使用下面的代碼
ctx:= DBMS_XMLGEN.newContext(' SELECT * FROM TABLE(CAST(V_ITEMLIST AS ITEM_ARRAY)) where (ITEM_NO is not null or trim(ITEM_NO) is not null) order by ITEM_NO,PARTYABBRVCODE ');
DBMS_XMLGEN.setRowTag (ctx, 'itembom');
DBMS_XMLGEN.setRowSetTag (ctx, 'itemboms');
xmldoc := DBMS_XMLGEN.getXML(ctx);
我的這段代碼返回錯誤,V_ITEMLIST
不存在。
但是當我做dbms_out像
For I In 1..V_Itemlist.Count Loop
Dbms_Output.Put_Line('Partyabbrvcode '||V_Itemlist(I).Partyabbrvcode);
DBms_Output.Put_Line('Item_No'||V_Itemlist(I).Item_No);
這是返回值。
我正在嘗試不同的方法,如將V_ITEMLIST
保存到遊標中,然後如下調用該代碼。
ctx := dbms_xmlgen.newContext (ITEMCUR);
xmldoc := DBMS_XMLGEN.getXML(ctx);
DBMS_XMLGEN.closeContext(ctx);
其中項光標是
SELECT * FROM TABLE(CAST(V_ITEMLIST AS ITEM_ARRAY)) where (ITEM_NO is not null or trim(ITEM_NO) is not null) order by ITEM_NO,PARTYABBRVCODE.
這也示出了錯誤數值或數值誤差。
有人請建議如何實現這一點。
歡迎來到StackOverflow。多行代碼不使用任何引號來進行格式化,只是縮進。只需插入代碼,選擇它並點擊'{}'按鈕。並且使用全部大寫字母被認爲是不好的風格。我解決了這兩個問題。 – Codo