使用 Oracle XMLgen 实用程序使用内存表数据创建 XML
我正在 Oracle 中使用 dbms.xmlgen 实用程序从保存到 Oracle 内存表的数据创建 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.
这也显示错误数字或值错误。
任何人请建议如何实现这一点。
I am using dbms.xmlgen
utility in Oracle to create XML document from the data saved to oracle memory table .
My procedure is saving the data in Oracle type ITEM_ARRAY
. This is table of ITEM_OBJECT
type.
Finally data is there in my ITEM_ARRAY
. Now I want to convert this data into XML. So I am using following code
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);
My this code is returning error that V_ITEMLIST
does not exist.
But when I am doing dbms_out like
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);
This is returning values.
I was trying different method like saving V_ITEMLIST
into cursor then calling this code as below.
ctx := dbms_xmlgen.newContext (ITEMCUR);
xmldoc := DBMS_XMLGEN.getXML(ctx);
DBMS_XMLGEN.closeContext(ctx);
where item cursor is
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.
This is also showing error numeric or value error.
Anybody please suggest how to implement this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
DBMS_XMLGEN.newContext 执行 SQL 查询,但 SQL 无法直接访问 PL/SQL 数据。查询必须调用返回相关数据的函数。
DBMS_XMLGEN.newContext executes a SQL query, but SQL cannot directly access PL/SQL data. The query must call a function that returns the relevant data.