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:

  1. as @stevo wrote: unnecessary comma
  2. inside xmlforest in first select statement wrong alias in where part
  3. you shouldn't use xmlforest, should use xmlconcat
  4. joining 2 tables in main select unnecessary. after small modification: change where part where ds.file_name = 'abc' , ds.dataset_code ='123' table file_product used.

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -