Getting XML from Five Different Oracle Tables -
i need xml
<dataset code="123" title="" pubcode="456" minrows="0"> <schema code="s1" /> <!-- can 1 --> <rowset code="rs1" /> <!-- can 1 --> <sorter> <!-- field can more 1 --> <field name="field1" order="o1"/> <field name="field2" order="o2"/> </sorter> <!-- filter can more 1 --> <filter type="filter1" value="val1" /> <filter type="filter2" value="val2" /> </dataset>
where each tag corresponds a separate table. , each attribute in tag column in corresponding table have written below sql same
select xmlelement(name "dataset", xmlattributes(ds.dataset_code "code",ds.dataset_title "title",ds.pub_code "pubcode",ds.min_rows "minrowss"), xmlforest( (select xmlelement("schema", xmlattributes(fs.schema_code "code")) file_schema fs fr.dataset_code = ds.dataset_code), (select xmlelement("rowset", xmlattributes(fr.rowset_code "code")) file_rowset fr fr.dataset_code = ds.dataset_code), (select xmlelement(name "sorter", xmlagg(xmlelement(name "field", xmlattributes(fsf.field_name "name",fsf.field_order "order") ) ) ) file_sorter_field fsf fsf.dataset_code=ds.dataset_code), (select xmlagg(xmlelement(name "filter", xmlattributes(type "type",value "value"))) file_filter ff ff.dataset_code=ds.dataset_code) )) file_product fp , file_dataset ds fp.file_name = ds.file_name , fp.file_name = 'abc' , ds.dataset_code ='123' ;
for error below
ora-19208: parameter 1 of function xmlforest must aliased 19208. 00000 - "parameter %s of function %s must aliased" *cause: indicated parameter of xml generation function has not been aliased, although expression. *action: specify alias expression using clause. error @ line: 19 column: 5
any appreciated
as per kpater87 modified query to
select xmlelement(name "dataset", xmlattributes(ds.dataset_code "code",ds.dataset_title "title",ds.pub_code "pubcode",ds.min_rows "minrowss"), xmlconcat( select xmlelement("schema", xmlattributes(fs.schema_code "code")) file_schema fs fs.dataset_code = ds.dataset_code, select xmlelement("rowset", xmlattributes(fr.rowset_code "code")) file_rowset fr fr.dataset_code = ds.dataset_code, select xmlelement(name "sorter", xmlagg(xmlelement(name "field", xmlattributes(fsf.field_name "name",fsf.field_order "order") ) ) ) file_sorter_field fsf fsf.dataset_code=ds.dataset_code, select xmlagg(xmlelement(name "filter", xmlattributes(type "type",value "value"))) file_filter ff ff.dataset_code=ds.dataset_code )) file_dataset ds ds.file_name = 'abc' , ds.dataset_code ='123' ;
still error
ora-00936: missing expression 00936. 00000 - "missing expression" *cause:
*action: error @ line: 4 column: 28
problems in code:
- as @stevo wrote: unnecessary comma
- inside
xmlforest
in firstselect
statement wrong alias inwhere
part - you shouldn't use
xmlforest
, should use xmlconcat - joining 2 tables in main
select
unnecessary. after small modification: changewhere
partwhere ds.file_name = 'abc' , ds.dataset_code ='123'
tablefile_product
used.
Comments
Post a Comment