Я использую в Oracle утилиту dbms.xmlgen
для создания XML-документа из данных, сохраненных в таблице памяти Oracle.
Моя процедура сохранения данных в типе 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.
Это также показывает ошибку числа или значения ошибки.
Кто-нибудь, пожалуйста, подскажите, как это реализовать.