Discussions
Categories
- 197.1K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.7K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 555 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.3K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 466 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
How to generate the xml (group of tags) with multiple times??

Hi Team,
I'm having the parameter's list in one of the master detail table, I want to generate the xml tags for Parameter name & value. Could you please help us on this?
Xml:
<pub:item> <pub:name>p_from_date</pub:name> <pub:values> <pub:item>10-01-2019</pub:item> </pub:values> </pub:item>
I want to generate the above xml with multi records
Regards,
Praveen
Best Answer
-
Like this:
select xmlagg( xmlelement("pub:item", xmlelement("pub:name",param_name), xmlelement("pub:values", xmlelement("pub:item",param_value) ) ) ) from xx_master_data_param Output (pretty printed): <pub:item> <pub:name>P_FROM_DATE</pub:name> <pub:values> <pub:item>01-JAN-2022</pub:item> </pub:values> </pub:item> <pub:item> <pub:name>P_PERSON_ID</pub:name> <pub:values> <pub:item>70023</pub:item> </pub:values> </pub:item> <pub:item> <pub:name>P_TO_DATE</pub:name> <pub:values> <pub:item>31-DEC-2022</pub:item> </pub:values> </pub:item>
Note that this an incomplete XML fragment, it's missing a root tag and the defintion of the pub namespace.
By the way: Storing dates as varchars is generally a bad idea.
Answers
-
Provide create master detail table statement along with insert statements for sample data and expected results
SY.
-
Table Script:
CREATE TABLE XX_MASTER_DATA_PARAM (PARAM_NAME VARCHAR2(100), PARAM_VALUE VARCHAR2(100))
Insert Data:
INSERT INTO "RACE"."XX_MASTER_DATA_PARAM" (PARAM_NAME, PARAM_VALUE) VALUES ('P_FROM_DATE', '01-JAN-2022');
INSERT INTO "RACE"."XX_MASTER_DATA_PARAM" (PARAM_NAME, PARAM_VALUE) VALUES ('P_PERSON_ID', '70023');
INSERT INTO "RACE"."XX_MASTER_DATA_PARAM" (PARAM_NAME, PARAM_VALUE) VALUES ('P_TO_DATE', '31-DEC-2022');
I want the xml set for 3 time with these values
-
Like this:
select xmlagg( xmlelement("pub:item", xmlelement("pub:name",param_name), xmlelement("pub:values", xmlelement("pub:item",param_value) ) ) ) from xx_master_data_param Output (pretty printed): <pub:item> <pub:name>P_FROM_DATE</pub:name> <pub:values> <pub:item>01-JAN-2022</pub:item> </pub:values> </pub:item> <pub:item> <pub:name>P_PERSON_ID</pub:name> <pub:values> <pub:item>70023</pub:item> </pub:values> </pub:item> <pub:item> <pub:name>P_TO_DATE</pub:name> <pub:values> <pub:item>31-DEC-2022</pub:item> </pub:values> </pub:item>
Note that this an incomplete XML fragment, it's missing a root tag and the defintion of the pub namespace.
By the way: Storing dates as varchars is generally a bad idea.