Chapter 2. Application development with DB2 pureXML 
85
All XML APIs supported by Java language, including SAX (Simple API for XML), 
DOM (Document Object Model), and StAX (Streaming API for XML) are 
discussed in detail in the Java chapter. You can also refer to the DB2 information 
center for specific topics regarding application development with Java. 
.NET data provider
The DB2 9 .NET interface supports the Microsoft .NET API and ADO.net data 
access APIs thoroughly. There is a chapter about application development using 
.NET in this book. 
Call Level Interface
The DB2 Call Level Interface (CLI), a superset of ODBC, has been enhanced to 
support XML by providing a new SQL type, SQL_XML. Because there is no 
native XML type in C, the new SQL type can only be used in CLI/ODBC calls to 
mark XML values as XML type. In all other ways, access to serialized XML string 
data is identical to using a character array. The advantage is that the DB2 client 
and sever know that this is XML data and can avoid unnecessary or unwanted 
code page conversions. Example 2-24 shows how to retrieve and update XML 
data using the CLI interface.
Example 2-24   Retrieving and updating XML data using CLI
char buf[10240];
integer length;
// retrieve XML
SQLExecute( hStmt, "Select movieDetails from movies where id = '345'", 
SQL_NTS );
SQLBindCol( hStmt, 1, SQL_C_BINARY, buf, &length );
SQLFetch( hStmt);
SQLClose( hStmt);
// update as XML
SQLPrepare(hStmt, "update movies set movieDetails = ? where id = 
'345'", SQL_NTS );
SQLBindParameter( hStmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, 
SQL_XML, buf, &length);
SQLExecute( hStmt );
Please note that data is fetched and inserted as SQL_C_BINARY. 
Embedded SQL interface
The SQL standard defines new host variable declarations for XML types, and 
DB2 is using this in its implementation. Example 2-25 on page 86 shows the 
embedded SQL with XML.
.Pdf printing in thumbnail size - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf thumbnail creator; create thumbnail from pdf
.Pdf printing in thumbnail size - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
thumbnail view in for pdf files; create pdf thumbnail image
86
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
Example 2-25   Using XML in embedded SQL
EXEC SQL BEGIN DECLARE;
SQL TYPE IS XML AS CLOB( 10K ) xmlBuf;
SQL TYPE IS CLOB( 10K ) clobBuf;
EXEC SQL END DECLARE SECTION;
// as XML
EXEC SQL SELECT movieDetails INTO :xmlBuf from movies where id = ‘345’;
EXEC SQL UPDATE movies SET movieDetails = :xmlBuf where id = ‘345’;
// as CLOB
EXEC SQL SELECT XMLSerialize( movieDetails ) INTO :clobBuf from movies 
where id = ‘345’;
EXEC SQL UPDATE movies SET movieDetails = XMLParse(:clobBuf) where id = 
‘345’;
2.2.12  Utilities and XML support
In DB2 9, DB2 utilities and commands are modified for XML support.
XML import and export
IMPORT
and 
EXPORT
commands are updated for XML options. The IMPORT 
and EXPORT command treats the XML value similar to the LOBs. Equivalent to 
the LOB’s options LOBFILE, LOBS TO and LOBS FROM, XMLFILE, XML TO 
and XML FROM options are added for the XML values. The only difference 
between the LOBs and XML export is that unlike LOBS, an inline XML value in 
the exported data file is not possible. So the XML values are exported to the 
separate files always. Similar to LOB location specifier (LLS) for LOB data, an 
XML data specifier (XDS) is introduced to define the XML value in data files. The 
attributes of the XDS are FIL, OFF, LEN, and SCH, which we explain as follows:
 FIL
This attribute gives the file name where the XML values are exported.
 OFF
This attribute specifies the offset of the XML value in the file in case XML 
values are concatenated in a single file.
 LEN
This attribute specifies the length of the XML value.
 SCH
For IMPORT, this attribute gives the XML schema relational name, which is 
used to validate the XML schema while importing the data to the table. To 
Create Thumbnail Winforms | Online Tutorials
For information about saving & printing images in Create Thumbnail; Generate Barcodes on Your Documents; Read Processing; RasterEdge OCR Engine; PDF Reading; Encode
create thumbnail from pdf c#; how to make a thumbnail from pdf
VB.NET Image: Visual Basic .NET Guide to Draw Text on Image in .
can adjust the text font, font size, font type System.IO Imports System.Drawing.Printing Imports RasterEdge & profession imaging controls, PDF document, image
generate thumbnail from pdf; pdf thumbnail generator online
Chapter 2. Application development with DB2 pureXML 
87
export this attribute, give the schema relational name, which was used to 
validate this XML value when it was inserted.
IMPORT syntax
We explain the new options for the IMPORT command using the following 
command:
IMPORT FROM export.del OF DEL XML FROM xmlpath MODIFIED BY XMLCHAR 
XMLPARSE PRESERVE WHITESPACE XMLVALIDATE USING XDS DEFAULT SCHEMA_A, 
IGNORE (SCHEMA_B, SCHEMA_C, SCHEMA_D) MAP ((SCHEMA_E, SCHEMA_F), 
(SCHEMA_G, SCHEMA_H)) INSERT INTO T1
The explanations for the terms in the command are:
 XML FROM option 
Specify one or more paths where the XML files are stored.
 MODIFIED BY XMLCHAR option 
Specify that the XML data in the files is in application character code page.
 MODIFIED BY XMLGRAPHIC option 
Specify that the XML data in the files are in application graphic code page.
 XMLPARSE option 
Indicate that the whitespace in the XML values would be removed or not. 
STRIP WHITESPACE removes the whitespaces and the PRESERVE 
WHITEPACE option preserves the whitespaces in the XML value.
 XMLVALIDATE option 
Specify how to validate the XML values before importing them in the table 
column. There are three options to validate an XML value:
– XMLVALIDATE USING XDS option 
Specify that the XML value is validated using XDS’s SCH attribute. Use 
the DEFAULT clause of this option to specify the default schema name in 
case XDS does not contain the SCH attribute. Use the IGNORE clause to 
ignore some schemas. In case the SCH attribute value is any, the 
schema mentioned in the IGNORE clause, validation is ignored and the 
value is imported without any validation. 
Use the MAP clause to map a schema to other schema. The MAP clause 
has a set of schemas for each entry. If the SCH attribute value is any of 
the schema mentioned in the first schema name in the set of schema 
values in the MAP clause, the schema is mapped to the second schema 
entry in the same set and the validation is done against the mapped 
schema.
XImage.Raster for .NET, Comprehensive .NET RasterImage SDK
resolution printing; More about Image Saving & Printing Create thumbnail directly in image. provide powerful & profession imaging controls, PDF document, image
pdf reader thumbnails; can't view pdf thumbnails
VB.NET Image: How to Create Visual Basic .NET Windows Image Viewer
image, rotating and flipping an image, printing & saving including png, jpeg, gif, tiff, bmp, PDF, and Word You can accurately define the size and location of
can't see pdf thumbnails; pdf thumbnail fix
88
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
– XMLVALIDATE USING SCHEMA option 
Specify that the XML value should be validated against the schema 
specified here. The SCH attribute is ignored in every case.
– XMLVALIDATE USING SCHEMALOCATION HINTS option 
Specify that XML values are validated using the schemalocation hints 
present in the XML value itself. The SCH attribute is ignored.
EXPORT syntax
We explain the new option for the EXPORT command using the following 
command:
EXPORT TO export.del OF DEL XML TO /xmlpath XMLFILE xmldocs MODIFIED BY 
XMLINSEPFILES XMLCHAR XMLSAVESCHEMA SELECT * FROM T1
The explanations of the terms in the command are:
 XML TO clause
This clause provides the paths where the XML data is stored. The default 
value for this clause is the path where the data file is written. Multiple values 
can be given for this clause. If the multiple values are provided, export will 
cycle between the paths to write each column value to the appropriate XML 
file.
 XMLFILE option
This option supplies the base name of the XML file where the XML values are 
written.The default value for the base name is the name of the data file. The 
full name of the file consists of the base name followed by a number, which is 
padded to three digits and then the three letter identifier (XML). For the 
previous command, the file name is xmldocs.001.xml.
Tip: For a particular row, you can only apply one of the DEFAULT, 
IGNORE, or MAP clauses. The priority of these clauses is DEFAULT, 
IGNORE, and MAP. This means that if the XDS does not contain the 
SCH attribute, the schema in the DEFAULT clause is used and cannot 
be further mapped or ignored. Similarly, a schema, which is already 
mapped, cannot be ignored. It might be possible that the SCH attribute 
for rows has the same value as the DEFAULT clause. In that case, the 
schema can be ignored or mapped because the DEFAULT clause is 
not applicable to that.
VB.NET Image: How to Draw Annotation on Doc Images with Image SDK
and bmp) or documents (like multi-page TIFF, Microsoft Office Word and PDF file You can freely control the annotation shapes, the outline size (width and height
view pdf thumbnails in; how to make a thumbnail of a pdf
VB.NET Image: VB.NET Code to Create Watermark on Images in .NET
font type "Times New Roman", size "16", and style System.IO Imports System.Drawing. Printing Imports RasterEdge & profession imaging controls, PDF document, tiff
view pdf image thumbnail; how to show pdf thumbnails in
Chapter 2. Application development with DB2 pureXML 
89
 MODIFIED BY clause
Use this to change the behavior of exported files, and this is called a file type 
modifier. We introduce the following new file type modifiers.
 MODIFIED BY XMLINSEPFILES option
This option specifies that the XML value for each column should be stored on 
the separate files instead of storing it in a single file. By default, all the values 
are concatenated in a single file. If you specify this option, a separate file 
name is generated for each column to store the XML value. For the previous 
command, the file names are xmldocs.001.xml, xmldocs.002.xml, and so on.
 MODIFIED BY XMLGRAPHIC option
This option specifies that the XML data should be written in the application 
graphics code page.
 MODIFIED XMLCHAR
This option specifies that the XML data should be written in the application 
character code page.
 MODIFIED BY XMLNODECLARATION
This option specifies that no XML declaration tag should be added to the XML 
value. By default, every XML value written to the file has a declaration tag 
with encoding information.
 XMLSAVESCHEMA
This option specifies that the schema name should be saved for all XML 
columns. The fully qualified name of the schema is stored as XDS’s SCH 
attribute.
XML RUNSTATS
The RUNSTATS command supports XML value and collects information regarding 
the XML data in the tables and indexes created on an XML value. The RUNSTATS 
command for an XML value runs in the same way it runs for the relational 
columns. The XML column supports the following RUNSTATS commands:
RUNSTATS on table <schemaname.tablename>
RUNSTATS on table <schemaname.tablename> on columns <column list>
RUNSTATS on table <schemaname.tablename> on columns <column list> with 
distribution on columns <column list>
RUNSTATS collects the information regarding the XML columns if either 
RUNSTATS is run on the full table or the name of the XML column appears in 
<column list>.
C# Image: How to Draw Text on Images within Rasteredge .NET Image
such as adjusting text font size, color, style and System.IO; using System.Drawing. Printing; using RasterEdge & profession imaging controls, PDF document, tiff
show pdf thumbnail in; enable pdf thumbnails
VB.NET Image: How to Create New Images Using VB.NET Codes in .NET
the complete VB.NET sample codes for printing a high settings like image color and size according to powerful & profession imaging controls, PDF document, tiff
create thumbnail jpeg from pdf; pdf thumbnails in
90
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
2.2.13  XML type support in stored procedures
Stored procedures are enabled to accept the XML parameter values. 
SQL stored procedures
In SQL, stored procedure parameters of type XML look just like the variables of 
other data type. 
Example 2-26 shows a simple SQL stored procedure, which takes three input 
parameters. The first parameter is of XML type and the other two are of integer 
type. The procedure checks if the ID value in the XML parameter review is equal 
to the ID values passed as the argument ID. If yes, the procedure inserts the 
review in the MOVIEREVIEW table with the review ID equal to the value of the 
reviewid parameter.
Example 2-26   Stored procedure with XML data type input
create procedure proc1 (IN review XML, IN id int, IN reviewid int)
language SQL
BEGIN
DECLARE var1 XML;
if(XMLEXISTS('$x/movie[@id=$d]' passing review as "x", id as "d")) 
then
insert into moviereview values(reviewid, review);
end if;
end
Example 2-27 calls the procedure that was created in Example 2-26.
Example 2-27   Call stored procedure passing XML parameter
call proc1(XMLPARSE(DOCUMENT('<movie id="111">
<reviews>
<UserReview>
<user name="Andy">Three is a crowd, yet there are not enough stars to support 
this catastrophe.</user>
<user name="Linda">Three is a crowd, yet there are not enough stars to support 
this catastrophe.</user>
</UserReview>
<CriticsReview>
<newspaper name="ABC Times">The best mystery thriller of the year. </newspaper>
<newspaper name="San Francisco Post"> The best mystery thriller of the year. 
</newspaper>
</CriticsReview>
</reviews></movie>')),111,222)@
VB.NET Image: Web Image and Document Viewer Creation & Design
document pages with zero footprint and thumbnail preview support Basic project is capable of printing current image toolkit to print bitonal images, PDF, and so
show pdf thumbnails; disable pdf thumbnails
VB.NET Image: Compress & Decompress Document Image; RasterEdge .
System.IO Imports System.Drawing.Printing Imports RasterEdge decompressing: reduce Word document size according to Scanned PDF encoding and decoding: compress a
no pdf thumbnails in; create thumbnails from pdf files
Chapter 2. Application development with DB2 pureXML 
91
Because XQuery does not support static cursors, in SQL stored procedures, it is 
not possible to declare the cursor for the XQuery statement using the DECLARE 
CURSOR statement, which means the following command gives an error.
DECLARE cur1 CURSOR for XQUERY .........
To create a cursor for an XQuery statement in an SQL stored procedure, do this:
DECLARE stmt_text VARCHAR (1024);
DECLARE stmt STATEMENT;
DECLARE cur1 CURSOR FOR stmt;
SET stmt_text = <xquery statement>;
PREPARE stmt FROM stmt_text;
XML type in external routine
You can use the XML data type in externally stored procedures and user defined 
functions. You declare the parameters in the same manner that you declare the 
host variable for the programming language used for the external routine. For 
details about how to declare the host variables in different programming 
languages, refer to 2.2.11, “Application support (interfaces)” on page 83.
Example 2-28 gives the command, which registers a stored procedure written in 
C language. 
Example 2-28   Registering a stored procedure
CREATE PROCEDURE proc2(IN review XML AS CLOB(2M), IN id int, IN 
reviewid int)
LANGUAGE C
FENCED
PARAMETER STYLE SQL
PARAMETER CCSID UNICODE
EXTERNAL NAME 'proclib!proc1';
In external routines, you should serialize XML values before sending the value to 
the user’s code. To avoid the code page conversion, XML values should be 
passed in unicode format. To specify that, routines with the XML type parameter 
should be declared as PARAMETER CCSID UNICODE.
C routines only support the XML AS CLOB type parameter.
For more details about how to handle XML variables, refer to the respective 
chapter. 
92
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
© Copyright IBM Corp. August 2006. All rights reserved.
93
Chapter 3.
Application development 
with PHP
The PHP language has been a darling of the open source software development 
community for years for reasons such as performance, the power of the 
language itself, and ease of use. Now, PHP language with the frameworks being 
built around it, seems to be ready for enterprise software development. This 
chapter provides you concept and hands-on with Zend Framework for building 
enterprise Web applications that require database and application integration 
support. When deciding to build an On Demand
1
Web application, there are 
many products and technologies that you can use. In most of the cases, you 
need to choose the following:
 Web server software
 An operating system
 A database management system
 A programming or scripting language
In this chapter, we do not address the hardware, operating system, or Web 
server software much. In fact, we do not need to. One of the strengths of PHP is 
that it is available on all of today’s popular operating systems, including many 
versions of UNIX and Linux operating systems. Similarly, IBM’s flagship 
3
1  
An On Demand Business is an enterprise whose business processes, integrated end-to-end across 
the company and with key partners, suppliers and customers, can respond with flexibility and 
speed to customer demand, market opportunity, or external threat.
94
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
database product, DB2, is also versatile and runs on Microsoft Windows, UNIX, 
Solaris, and many flavors of Linux. We have used the two most popular and 
widely used setups to showcase the application development steps in this 
chapter:
 SUSE Linux Professional with Apache Web Server
 Microsoft Windows XP Professional using Apache Web Server
Irrespective of the Web server software and operating system you choose, you 
should seriously consider using PHP with DB2 Express-C for the following 
reasons:
 No charge
Both PHP and DB2 Express-C are free. You can download the latest versions 
of DB2 Express-C and PHP from the following Web sites absolutely free of 
charge:
– http://www.ibm.com/db2/express 
– http://www.php.net 
Alternatively, you can use Zend Core for IBM, which packages the Apache 
Web Server, PHP libraries, and DB2 in one bundle. Currently, Zend Core 
include DB2 V8.2, so we recommend that you install DB2 9 first and then try 
to install Zend Core for IBM. Zend Core is supposed to find the DB2 already 
installed on your system and use it unless you choose to replace it. 
Remember that in order to take advantage of DB2 pureXML technologies and 
the XCS (discussed in this chapter), you must use DB2 9. We expect that 
Zend Core for IBM will be available with DB2 9 by the time this book is 
published. Currently, Zend Core for IBM is available for free download at the 
following Web site:
http://www.zend.com/products/zend_core/zend_core_for_ibm
 Ease of development
DB2 Express-C supports a full range of APIs for application development and 
simplifies the server side development with stored procedures and SQL 
functions. For PHP developers, DB2 Express-C comes bundled with Zend 
Core for IBM, a seamless, ready to use, easy-to-use PHP development 
environment. 
 Support for XML
DB2 Express-C includes leading edge technology for storing, managing, and 
searching XML data in a secure scalable environment. With its pureXML 
technology, your PHP application makes use of standard XQUERY and 
SQL/XML to build the latest applications.
Documents you may be interested
Documents you may be interested