ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzaha_5.4.0.1/db2genpm.htm

119 lines
6.1 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="concept" />
<meta name="DC.Title" content="DB2GENERAL parameter style" />
<meta name="abstract" content="When coding a Java stored procedure that uses the DB2GENERAL parameter style, you must use these conventions." />
<meta name="description" content="When coding a Java stored procedure that uses the DB2GENERAL parameter style, you must use these conventions." />
<meta name="DC.Relation" scheme="URI" content="javaproc.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="db2genpm" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>DB2GENERAL parameter style</title>
</head>
<body id="db2genpm"><a name="db2genpm"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">DB2GENERAL parameter style</h1>
<div><p>When coding a Java™ stored procedure that uses the DB2GENERAL
parameter style, you must use these conventions.</p>
<ul><li>The class that defines a Java stored procedure must <em>extend</em>,
or be a subclass of, the Java com.ibm.db2.app.StoredProc class.</li>
<li>The Java method must be a public void instance method.</li>
<li>The parameters of the Java method must be SQL-compatible types.</li>
<li>A Java method
may test for a SQL NULL value using the isNull method.</li>
<li>The Java method must explicitly set the return parameters
using the set method.</li>
<li>The Java method may access the current database using the
getConnection method.</li>
</ul>
<p>A class that includes a Java stored procedure must extend the class,
com.ibm.db2.app.StoredProc. Java stored procedures are public instance
methods. Within the classes, the stored procedures are identified by their
method name and signature. When you call a stored procedure, its signature
is generated dynamically, based on the variable types defined by the CREATE
PROCEDURE statement.</p>
<p>The com.ibm.db2.app.StoredProc class provides the isNull method, which
permits a Java method to determine if an input parameter is an
SQL NULL. The com.ibm.db2.app.StoredProc class also provides set...( ) methods
that set output parameters. You must use these methods to set output parameters.
If you do not set an output parameter, then the output parameter returns the
SQL NULL value.</p>
<p>The com.ibm.db2.app.StoredProc class provides the following routine to
fetch a JDBC connection to the embedding application context. A connection
to the embedding application context is accessed using the following JDBC
call:</p>
<blockquote><pre>public Java.sql.Connection getConnection( )</pre>
</blockquote>
<p>This connection then runs SQL statements with JDBC APIs.</p>
<p>The following is a small stored procedure with one input and two outputs.
It processes the given SQL query, and returns both the number of rows in the
result and the SQLSTATE.</p>
<p><strong>Example:</strong> Stored procedure with one input and two outputs</p>
<div class="note"><span class="notetitle">Note:</span> By using the
code examples, you agree to the terms of the <a href="codedisclaimer.htm">Code license and disclaimer information</a>.</div>
<blockquote><pre>package mystuff;
import com.ibm.db2.app.*;
import java.sql.*;
public class sample2 extends StoredProc {
public void donut(String query, int rowCount,
String sqlstate) throws Exception {
try {
Statement s=getConnection().createStatement();
ResultSet r=s.executeQuery(query);
int counter=0;
while(r.next()){
counter++;
}
r.close(); s.close();
set(2, counter);
}catch(SQLException x){
set(3, x.getSQLState());
}
}
}</pre>
</blockquote>
<p>To return a result set in procedures that use the DB2GENERAL parameter
style, the result set and the responding statement must be left open at the
end of the procedure. The result set that is returned must be closed by the
client application. If multiple results sets are returned, they are returned
in the order in which they were opened. For example, the following stored
procedure returns two results sets.</p>
<p><strong>Example:</strong> Stored procedure that returns two results sets</p>
<div class="note"><span class="notetitle">Note:</span> By using the
code examples, you agree to the terms of the <a href="codedisclaimer.htm">Code license and disclaimer information</a>.</div>
<blockquote><pre>public void returnTwoResultSets() throws Exception
{
// get caller's connection to the database; inherited from StoredProc
Connection con = getConnection ();
Statement stmt1 = con.createStatement ();
String sql1 = "select value from table01 where index=1";
ResultSet rs1 = stmt1.executeQuery(sql1);
Statement stmt2 = con.createStatement();
String sql2 = "select value from table01 where index=2";
ResultSet rs2 = stmt2.executeQuery(sql2);
}</pre>
</blockquote>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="javaproc.htm" title="When using Java to write stored procedures, you can use two possible parameter passing styles.">Java stored procedures</a></div>
</div>
</div>
</body>
</html>