dbTalk Databases Forums  

sql16012N Error

comp.databases.ibm-db2 comp.databases.ibm-db2


Discuss sql16012N Error in the comp.databases.ibm-db2 forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
scv1977
 
Posts: n/a

Default sql16012N Error - 04-28-2010 , 01:51 AM






Hi
I have the following build problem with CODE executing the following.
The simplified code does the following(SQL16012N)
The Sample code is the following.

CREATE OR REPLACE PROCEDURE xmlProc
RESULT SETS 1
LANGUAGE SQL
BEGIN
declare Cust XML;


set Cust = XMLCAST(
'<ROOT>
<DataBlock1>
<WorkingTag>A</WorkingTag>
<IDX_NO>1</IDX_NO>
<Status>0</Status>
<DataSeq>1</DataSeq>
<Selected>1</Selected>
<TABLE_NAME>DataBlock1</TABLE_NAME>
<CustName>CUST1</CustName>
<CustSeq>1</CustSeq>
</DataBlock1>
<DataBlock1>
<WorkingTag>A</WorkingTag>
<IDX_NO>2</IDX_NO>
<Status>0</Status>
<DataSeq>2</DataSeq>
<Selected>1</Selected>
<TABLE_NAME>DataBlock1</TABLE_NAME>
<CustName>CUST2</CustName>
<CustSeq>2</CustSeq>
</DataBlock1>
</ROOT>' AS XML);

insert into cust_tab2(cst)
select CustName from sysibm.sysdummy1,
XMLTABLE('$i' PASSING Cust AS "i"
Columns CustName VARCHAR(200) PATH 'ROOT/DataBlock1/CustName') AS T;

END@

--->The context item in an axis step must be an XQuery node. Error
QName=err:XPTY0020.

Reply With Quote
  #2  
Old   
Matthias Nicola
 
Posts: n/a

Default Re: sql16012N Error - 04-30-2010 , 05:01 PM






Hi there...
I think you need to use XMLPARSE instead of XMLCAST to convert a
literal string into an XML document of type XML. Also, the paths in
the XMLTABLE function need to be adjusted because you have multiple
repeating DataBlocks in a single document. Try the following:

CREATE OR REPLACE PROCEDURE xmlProc
RESULT SETS 1
LANGUAGE SQL
BEGIN
declare Cust XML;

set Cust = xmlparse(document
'<ROOT>
<DataBlock1>
<WorkingTag>A</WorkingTag>
<IDX_NO>1</IDX_NO>
<Status>0</Status>
<DataSeq>1</DataSeq>
<Selected>1</Selected>
<TABLE_NAME>DataBlock1</TABLE_NAME>
<CustName>CUST1</CustName>
<CustSeq>1</CustSeq>
</DataBlock1>
<DataBlock1>
<WorkingTag>A</WorkingTag>
<IDX_NO>2</IDX_NO>
<Status>0</Status>
<DataSeq>2</DataSeq>
<Selected>1</Selected>
<TABLE_NAME>DataBlock1</TABLE_NAME>
<CustName>CUST2</CustName>
<CustSeq>2</CustSeq>
</DataBlock1>
</ROOT>');

insert into cust_tab2(cst)
select CustName
from XMLTABLE('$i/ROOT/DataBlock1' PASSING Cust AS "i"
Columns CustName VARCHAR(200) PATH 'CustName') AS T;

END@

Cheers,

Matthias
http://www.tinyurl.com/pureXML

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.