Java アプリケーションでの XML パラメーターを指定したルーチンの呼び出し

Javaアプリケーションは、 Db2 の Linux®、UNIX、Windowsシステム、またはXMLパラメータを持つ Db2 for z/OS® データソースで、ストアドプロシージャを呼び出すことができます。

ネイティブ SQL プロシージャーの場合、ストアード・プロシージャー定義内の XML パラメーターは XML タイプです。 Db2、 Linux、UNIX、およびWindowsシステムデータソース上の外部ストアドプロシージャおよびユーザー定義関数では、ルーチン定義内のXMLパラメータはXML AS CLOB型です。 XML パラメーターのあるストアード・プロシージャーまたはユーザー定義関数を呼び出す場合は、呼び出しステートメントで互換データ・タイプを使用する必要があります。

JDBC プログラムから XML 入力パラメーターのあるルーチンを呼び出すには、java.sql.SQLXML または com.ibm.db2.jcc.DB2Xml タイプのパラメーターを使用します。 XML 出力パラメーターを登録するには、パラメーターを java.sql.Types.SQLXML または com.ibm.db2.jcc.DB2Types.XML タイプで登録します。 (com.ibm.db2.jcc.DB2Xml および com.ibm.db2.jcc.DB2Types.XML タイプは推奨されません。)

例: 3 つの XML パラメーター (IN パラメーター、OUT パラメーター、および INOUT パラメーター) を使用するストアード・プロシージャーを呼び出す JDBC プログラム。 この例では JDBC 4.0 以降が必要です。

java.sql.SQLXML in_xml = xmlvar; 
java.sql.SQLXML out_xml = null;
java.sql.SQLXML inout_xml = xmlvar;                               
                                  // Declare an input, output, and       
                                  // INOUT XML parameter
Connection con;
CallableStatement cstmt;
ResultSet rs;
…
cstmt = con.prepareCall("CALL SP_xml(?,?,?)");
                                  // Create a CallableStatement object
cstmt.setObject (1, in_xml);      // Set input parameter
cstmt.setObject (3, inout_xml);   // Set inout parameter
cstmt.registerOutParameter (2, java.sql.Types.SQLXML);
                                  // Register out and input parameters
cstmt.registerOutParameter (3, java.sql.Types.SQLXML);
cstmt.executeUpdate();            // Call the stored procedure
out_xml = cstmt.getSQLXML(2);     // Get the OUT parameter value
inout_xml = cstmt.getSQLXML(3);   // Get the INOUT parameter value
System.out.println("Parameter values from SP_xml call: ");
System.out.println("Output parameter value ");
MyUtilities.printString(out_xml.getString());
                          // Use the SQLXML.getString
                          // method to convert the out_xml
                          // value to a string for printing.
                          // Call a user-defined method called
                          // printString (not shown) to print
                          // the value.
System.out.println("INOUT parameter value ");
MyUtilities.printString(inout_xml.getString());
                          // Use the SQLXML.getString
                          // method to convert the inout_xml
                          // value to a string for printing.
                          // Call a user-defined method called
                          // printString (not shown) to print
                          // the value.

SQLJ プログラムから XML パラメーターのあるルーチンを呼び出すには、java.sql.SQLXML または com.ibm.db2.jcc.DB2Xml タイプのパラメーターを使用します。

例: 3 つの XML パラメーター (IN パラメーター、OUT パラメーター、および INOUT パラメーター) を使用するストアード・プロシージャーを呼び出す SQLJ プログラム。 この例では JDBC 4.0 以降が必要です。

java.sql.SQLXML in_xml = xmlvar;
java.sql.SQLXML out_xml = null;
java.sql.SQLXML inout_xml = xmlvar;
                                  // Declare an input, output, and 
                                  // INOUT XML parameter
…
#sql [myConnCtx] {CALL SP_xml(:IN in_xml,
                            :OUT out_xml,
                            :INOUT inout_xml)};
                                  // Call the stored procedure
System.out.println("Parameter values from SP_xml call: ");
System.out.println("Output parameter value ");
MyUtilities.printString(out_xml.getString());
                          // Use the SQLXML.getString 
                          // method toconvert the out_xml value 
                          // to a string for printing.
                          // Call a user-defined method called
                          // printString (not shown) to print
                          // the value.
System.out.println("INOUT parameter value ");
MyUtilities.printString(inout_xml.getString());
                          // Use the SQLXML.getString
                          // method to convert the inout_xml
                          // value to a string for printing.
                          // Call a user-defined method called
                          // printString (not shown) to print
                          // the value.