Skip to Main Content
IBM Power Ideas Portal


This portal is to open public enhancement requests against IBM Power Systems products, including IBM i. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Not under consideration
Workspace IBM i
Categories Db2 for i
Created by Guest
Created on Apr 24, 2019

Additional CAST support for XML

The XML datatype currently has no CAST support to other datatypes like CHAR, VARCHAR, CLOB, BLOB which makes migrations difficult (requires programs to be written).


Use Case:

We have an existing database with XML in CLOB fields which doesn't work with the XMLTABLE function. The strange thing is that an INSERT INTO SELECT FROM does do some implicit CASTing ?


Idea priority High
  • Guest
    Reply
    |
    Feb 18, 2020

    Hi,
    There is an existing approach to get this to work. You do NOT need to change the data model in order to support XMLTABLE, but rather modify the XMLTABLE invocation.

    Wrap the CLOB with an XMLPARSE function as shown in the following side by side comparisons below.

    set schema slrxmlsamp;

    CALL QSYS.CREATE_XML_SAMPLE ('SLRXMLSAMP');

    SELECT U."PO ID", U."Part #", U."Product Name",
    U."Quantity", U."Price", U."Order Date"
    FROM PURCHASEORDER P,
    XMLTABLE('$po/PurchaseOrder/item' PASSING P.PORDER AS "po"
    COLUMNS "PO ID" INTEGER PATH '../@PoNum',
    "Part #" CHAR(10) PATH 'partid',
    "Product Name" VARCHAR(50) PATH 'name',
    "Quantity" INTEGER PATH 'quantity',
    "Price" DECIMAL(9,2) PATH 'price',
    "Order Date" DATE PATH '../@OrderDate'
    ) AS U
    WHERE P.STATUS = 'Unshipped';

    create table qtemp.newtab(porder) as (
    select xmlserialize(porder as clob(1000)) from purchaseorder) with data; -- clob version of the xml document

    -- Note the use of XMLPARSE...
    SELECT *
    FROM qtemp.newtab P,
    XMLTABLE('$po/PurchaseOrder/item' PASSING xmlparse(document P.PORDER) AS "po"
    COLUMNS "PO ID" INTEGER PATH '../@PoNum',
    "Part #" CHAR(10) PATH 'partid',
    "Product Name" VARCHAR(50) PATH 'name',
    "Quantity" INTEGER PATH 'quantity',
    "Price" DECIMAL(9,2) PATH 'price',
    "Order Date" DATE PATH '../@OrderDate'
    ) AS U
    ;