Example: Referencing XML host variables in embedded SQL applications
The following sample applications demonstrate how to reference XML host variables in C and COBOL.
Embedded SQL C application:
EXEC SQL BEGIN DECLARE;
SQL TYPE IS XML AS CLOB( 10K ) xmlBuf;
SQL TYPE IS XML AS BLOB( 10K ) xmlblob;
SQL TYPE IS CLOB( 10K ) clobBuf;
EXEC SQL END DECLARE SECTION;
// using XML AS CLOB host variable
// The XML value written to xmlBuf will be prefixed by an XML declaration
// similar to: <?xml version = "1.0" encoding = "UTF-8"?>
// Note: The encoding name will depend upon the SQL_XML_DATA_CCSID QAQQINI setting
EXEC SQL SELECT xmlCol INTO :xmlBuf
FROM myTable
WHERE id = '001';
EXEC SQL UPDATE myTable
SET xmlCol = :xmlBuf
WHERE id = '001';
// using XML AS BLOB host variable
// The XML value written to xmlblob will be prefixed by an XML declaration
// similar to: <?xml version = "1.0" encoding = "UTF-8"?>
EXEC SQL SELECT xmlCol INTO :xmlblob
FROM myTable
WHERE id = '001';
EXEC SQL UPDATE myTable
SET xmlCol = :xmlblob
WHERE id = '001';
// using CLOB host variable
// The output will be encoded in the application single byte default CCSID,
// but will not contain an XML declaration
EXEC SQL SELECT XMLSERIALIZE (xmlCol AS CLOB(10K)) INTO :clobBuf
FROM myTable
WHERE id = '001';
EXEC SQL UPDATE myTable
SET xmlCol = XMLPARSE (:clobBuf PRESERVE WHITESPACE)
WHERE id = '001';
Embedded SQL COBOL application:
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 xmlBuf USAGE IS SQL TYPE IS XML as CLOB(5K).
01 clobBuf USAGE IS SQL TYPE IS CLOB(5K).
01 xmlblob USAGE IS SQL TYPE IS XML AS BLOB(5K).
EXEC SQL END DECLARE SECTION END-EXEC.
* using XML AS CLOB host variable
EXEC SQL SELECT xmlCol INTO :xmlBuf
FROM myTable
WHERE id = '001'.
EXEC SQL UPDATE myTable
SET xmlCol = :xmlBuf
WHERE id = '001'.
* using XML AS BLOB host variable
EXEC SQL SELECT xmlCol INTO :xmlblob
FROM myTable
WHERE id = '001'.
EXEC SQL UPDATE myTable
SET xmlCol = :xmlblob
WHERE id = '001'.
* using CLOB host variable
EXEC SQL SELECT XMLSERIALIZE(xmlCol AS CLOB(10K)) INTO :clobBuf
FROM myTable
WHERE id= '001'.
EXEC SQL UPDATE myTable
SET xmlCol = XMLPARSE(:clobBuf) PRESERVE WHITESPACE
WHERE id = '001'.
