Diff of esql.xsl to show changes: --- Original esql.xsl called oldesql.xsl Modified esql.xsl called esq.xsl + indicates addition ! indicates change ---
*** oldesql.xsl Thu Nov 29 12:09:24 2001 --- esql.xsl Wed Jan 9 12:45:56 2002 *************** *** 207,212 **** --- 207,213 ---- <xsp:include>java.sql.Connection</xsp:include> <xsp:include>java.sql.Statement</xsp:include> <xsp:include>java.sql.PreparedStatement</xsp:include> + <xsp:include>java.sql.CallableStatement</xsp:include> <xsp:include>java.sql.ResultSet</xsp:include> <xsp:include>java.sql.ResultSetMetaData</xsp:include> <xsp:include>java.sql.SQLException</xsp:include> *************** *** 289,294 **** --- 290,296 ---- String query; Statement statement; PreparedStatement prepared_statement; + CallableStatement stored_procedure; ResultSet resultset; ResultSetMetaData resultset_metadata; /** the position of the current row in the resultset **/ *************** *** 296,301 **** --- 298,304 ---- int max_rows = -1; int skip_rows = 0; boolean results; + boolean stored_procedure_expect_bound_results = false; } private final String getAscii(ResultSet set, String column) { *************** *** 546,551 **** --- 549,597 ---- } try { <xsl:choose> + <!-- this is a stored procedure --> + <xsl:when test="esql:stored-proc"> + try { + _esql_query.stored_procedure = _esql_connection.connection.prepareCall(_esql_query.query); + } catch (SQLException _esql_exception_<xsl:value-of select="generate-id(.)"/>) { + throw new RuntimeException("Error preparing stored procedure: "+_esql_query.query+": "+_esql_exception_<xsl:value-of select="generate-id(.)"/>.getMessage()); + } + _esql_query.statement = _esql_query.stored_procedure; + <xsl:for-each select="esql:query//esql:parameter"> + try { + <xsl:text>_esql_query.stored_procedure.</xsl:text> + + <xsl:choose> + <xsl:when test="@direction='in'"> + + <xsl:choose> + <xsl:when test="@type"> + <xsl:variable name="type"><xsl:value-of select="concat(translate(substring(@type,1,1),'abcdefghijklmnopqrstuvwxyz',' ABCDEFGHIJKLMNOPQRSTUVWXYZ'),substring(@type,2))"/></xsl:variable> + <xsl:text>set</xsl:text><xsl:value-of select="$type"/>(<xsl:value-of select="position()"/>,<xsl:call-template name="get-nested-content"><xsl:with-param name="content" select="."/></xsl:call-template>);<xsl:text> + </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>setString(</xsl:text><xsl:value-of select="position()"/>,String.valueOf(<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="."/></xsl:call-template>));<xsl:text> + </xsl:text> + </xsl:otherwise> + </xsl:choose> + + </xsl:when> + <xsl:when test="@direction='out'"> + <xsl:text>registerOutParameter(</xsl:text><xsl:value-of select="position()"/>,<xsl:value-of select="@type"/>); + _esql_query.stored_procedure_expect_bound_results = true; + </xsl:when> + </xsl:choose> + } catch (SQLException _esql_exception_<xsl:value-of select="generate-id(.)"/>) { + throw new RuntimeException("Error setting parameter on statement: "+_esql_query.query+": "+_esql_exception_<xsl:value-of select="generate-id(.)"/>); + } + </xsl:for-each> + try { + _esql_query.results = _esql_query.stored_procedure.execute(); <!-- stored procedure execute returns false for outputs that need to be bound e.g. Oracle --> + } catch (SQLException _esql_exception_<xsl:value-of select="generate-id(.)"/>) { + throw new RuntimeException("Error executed stored procedure: "+_esql_query.query+": "+_esql_exception_<xsl:value-of select="generate-id(.)"/>); + } + </xsl:when> <!-- this is a prepared statement --> <xsl:when test="esql:query//esql:parameter"> try { *************** *** 592,600 **** getLogger().debug("esql query: "+_esql_query.query); </xsl:otherwise> </xsl:choose> ! if (_esql_query.results) { do { _esql_query.resultset = _esql_query.statement.getResultSet(); _esql_query.resultset_metadata = _esql_query.resultset.getMetaData(); _esql_query.position = 0; if (_esql_connection.use_limit_clause == 0 && _esql_query.skip_rows > 0) { --- 638,650 ---- getLogger().debug("esql query: "+_esql_query.query); </xsl:otherwise> </xsl:choose> ! if (_esql_query.results || _esql_query.stored_procedure_expect_bound_results) { do { + if (_esql_query.results) _esql_query.resultset = _esql_query.statement.getResultSet(); + else + _esql_query.resultset = (ResultSet)_esql_query.stored_procedure.getObject(1); + _esql_query.resultset_metadata = _esql_query.resultset.getMetaData(); _esql_query.position = 0; if (_esql_connection.use_limit_clause == 0 && _esql_query.skip_rows > 0) { This message may contain privileged and/or confidential information. If you have received this e-mail in error or are not the intended recipient, you may not use, copy, disseminate, or distribute it; do not open any attachments, delete it immediately from your system and notify the sender by e-mail promptly that you have done so. Thank You. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]