src/java.sql/share/classes/java/sql/CallableStatement.java
changeset 47216 71c04702a3d5
parent 44256 12050b22e372
equal deleted inserted replaced
47215:4ebc2e2fb97c 47216:71c04702a3d5
       
     1 /*
       
     2  * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 package java.sql;
       
    27 
       
    28 import java.math.BigDecimal;
       
    29 import java.util.Calendar;
       
    30 import java.io.Reader;
       
    31 import java.io.InputStream;
       
    32 
       
    33 /**
       
    34  * The interface used to execute SQL stored procedures.  The JDBC API
       
    35  * provides a stored procedure SQL escape syntax that allows stored procedures
       
    36  * to be called in a standard way for all RDBMSs. This escape syntax has one
       
    37  * form that includes a result parameter and one that does not. If used, the result
       
    38  * parameter must be registered as an OUT parameter. The other parameters
       
    39  * can be used for input, output or both. Parameters are referred to
       
    40  * sequentially, by number, with the first parameter being 1.
       
    41  * <PRE>
       
    42  *   {?= call &lt;procedure-name&gt;[(&lt;arg1&gt;,&lt;arg2&gt;, ...)]}
       
    43  *   {call &lt;procedure-name&gt;[(&lt;arg1&gt;,&lt;arg2&gt;, ...)]}
       
    44  * </PRE>
       
    45  * <P>
       
    46  * IN parameter values are set using the <code>set</code> methods inherited from
       
    47  * {@link PreparedStatement}.  The type of all OUT parameters must be
       
    48  * registered prior to executing the stored procedure; their values
       
    49  * are retrieved after execution via the <code>get</code> methods provided here.
       
    50  * <P>
       
    51  * A <code>CallableStatement</code> can return one {@link ResultSet} object or
       
    52  * multiple <code>ResultSet</code> objects.  Multiple
       
    53  * <code>ResultSet</code> objects are handled using operations
       
    54  * inherited from {@link Statement}.
       
    55  * <P>
       
    56  * For maximum portability, a call's <code>ResultSet</code> objects and
       
    57  * update counts should be processed prior to getting the values of output
       
    58  * parameters.
       
    59  *
       
    60  *
       
    61  * @see Connection#prepareCall
       
    62  * @see ResultSet
       
    63  * @since 1.1
       
    64  */
       
    65 
       
    66 public interface CallableStatement extends PreparedStatement {
       
    67 
       
    68     /**
       
    69      * Registers the OUT parameter in ordinal position
       
    70      * <code>parameterIndex</code> to the JDBC type
       
    71      * <code>sqlType</code>.  All OUT parameters must be registered
       
    72      * before a stored procedure is executed.
       
    73      * <p>
       
    74      * The JDBC type specified by <code>sqlType</code> for an OUT
       
    75      * parameter determines the Java type that must be used
       
    76      * in the <code>get</code> method to read the value of that parameter.
       
    77      * <p>
       
    78      * If the JDBC type expected to be returned to this output parameter
       
    79      * is specific to this particular database, <code>sqlType</code>
       
    80      * should be <code>java.sql.Types.OTHER</code>.  The method
       
    81      * {@link #getObject} retrieves the value.
       
    82      *
       
    83      * @param parameterIndex the first parameter is 1, the second is 2,
       
    84      *        and so on
       
    85      * @param sqlType the JDBC type code defined by <code>java.sql.Types</code>.
       
    86      *        If the parameter is of JDBC type <code>NUMERIC</code>
       
    87      *        or <code>DECIMAL</code>, the version of
       
    88      *        <code>registerOutParameter</code> that accepts a scale value
       
    89      *        should be used.
       
    90      *
       
    91      * @exception SQLException if the parameterIndex is not valid;
       
    92      * if a database access error occurs or
       
    93      * this method is called on a closed <code>CallableStatement</code>
       
    94      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
    95      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
    96      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
    97      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
    98      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
    99      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   100      * this data type
       
   101      * @see Types
       
   102      */
       
   103     void registerOutParameter(int parameterIndex, int sqlType)
       
   104         throws SQLException;
       
   105 
       
   106     /**
       
   107      * Registers the parameter in ordinal position
       
   108      * <code>parameterIndex</code> to be of JDBC type
       
   109      * <code>sqlType</code>. All OUT parameters must be registered
       
   110      * before a stored procedure is executed.
       
   111      * <p>
       
   112      * The JDBC type specified by <code>sqlType</code> for an OUT
       
   113      * parameter determines the Java type that must be used
       
   114      * in the <code>get</code> method to read the value of that parameter.
       
   115      * <p>
       
   116      * This version of <code>registerOutParameter</code> should be
       
   117      * used when the parameter is of JDBC type <code>NUMERIC</code>
       
   118      * or <code>DECIMAL</code>.
       
   119      *
       
   120      * @param parameterIndex the first parameter is 1, the second is 2,
       
   121      * and so on
       
   122      * @param sqlType the SQL type code defined by <code>java.sql.Types</code>.
       
   123      * @param scale the desired number of digits to the right of the
       
   124      * decimal point.  It must be greater than or equal to zero.
       
   125      * @exception SQLException if the parameterIndex is not valid;
       
   126      * if a database access error occurs or
       
   127      * this method is called on a closed <code>CallableStatement</code>
       
   128      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
   129      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
   130      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
   131      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
   132      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
   133      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   134      * this data type
       
   135      * @see Types
       
   136      */
       
   137     void registerOutParameter(int parameterIndex, int sqlType, int scale)
       
   138         throws SQLException;
       
   139 
       
   140     /**
       
   141      * Retrieves whether the last OUT parameter read had the value of
       
   142      * SQL <code>NULL</code>.  Note that this method should be called only after
       
   143      * calling a getter method; otherwise, there is no value to use in
       
   144      * determining whether it is <code>null</code> or not.
       
   145      *
       
   146      * @return <code>true</code> if the last parameter read was SQL
       
   147      * <code>NULL</code>; <code>false</code> otherwise
       
   148      * @exception SQLException if a database access error occurs or
       
   149      * this method is called on a closed <code>CallableStatement</code>
       
   150      */
       
   151     boolean wasNull() throws SQLException;
       
   152 
       
   153     /**
       
   154      * Retrieves the value of the designated JDBC <code>CHAR</code>,
       
   155      * <code>VARCHAR</code>, or <code>LONGVARCHAR</code> parameter as a
       
   156      * <code>String</code> in the Java programming language.
       
   157      * <p>
       
   158      * For the fixed-length type JDBC <code>CHAR</code>,
       
   159      * the <code>String</code> object
       
   160      * returned has exactly the same value the SQL
       
   161      * <code>CHAR</code> value had in the
       
   162      * database, including any padding added by the database.
       
   163      *
       
   164      * @param parameterIndex the first parameter is 1, the second is 2,
       
   165      * and so on
       
   166      * @return the parameter value. If the value is SQL <code>NULL</code>,
       
   167      *         the result
       
   168      *         is <code>null</code>.
       
   169      * @exception SQLException if the parameterIndex is not valid;
       
   170      * if a database access error occurs or
       
   171      * this method is called on a closed <code>CallableStatement</code>
       
   172      * @see #setString
       
   173      */
       
   174     String getString(int parameterIndex) throws SQLException;
       
   175 
       
   176     /**
       
   177      * Retrieves the value of the designated JDBC <code>BIT</code>
       
   178      * or <code>BOOLEAN</code> parameter as a
       
   179      * <code>boolean</code> in the Java programming language.
       
   180      *
       
   181      * @param parameterIndex the first parameter is 1, the second is 2,
       
   182      *        and so on
       
   183      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
   184      *         the result is <code>false</code>.
       
   185      * @exception SQLException if the parameterIndex is not valid;
       
   186      * if a database access error occurs or
       
   187      * this method is called on a closed <code>CallableStatement</code>
       
   188      * @see #setBoolean
       
   189      */
       
   190     boolean getBoolean(int parameterIndex) throws SQLException;
       
   191 
       
   192     /**
       
   193      * Retrieves the value of the designated JDBC <code>TINYINT</code> parameter
       
   194      * as a <code>byte</code> in the Java programming language.
       
   195      *
       
   196      * @param parameterIndex the first parameter is 1, the second is 2,
       
   197      * and so on
       
   198      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   199      * is <code>0</code>.
       
   200      * @exception SQLException if the parameterIndex is not valid;
       
   201      * if a database access error occurs or
       
   202      * this method is called on a closed <code>CallableStatement</code>
       
   203      * @see #setByte
       
   204      */
       
   205     byte getByte(int parameterIndex) throws SQLException;
       
   206 
       
   207     /**
       
   208      * Retrieves the value of the designated JDBC <code>SMALLINT</code> parameter
       
   209      * as a <code>short</code> in the Java programming language.
       
   210      *
       
   211      * @param parameterIndex the first parameter is 1, the second is 2,
       
   212      * and so on
       
   213      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   214      * is <code>0</code>.
       
   215      * @exception SQLException if the parameterIndex is not valid;
       
   216      * if a database access error occurs or
       
   217      * this method is called on a closed <code>CallableStatement</code>
       
   218      * @see #setShort
       
   219      */
       
   220     short getShort(int parameterIndex) throws SQLException;
       
   221 
       
   222     /**
       
   223      * Retrieves the value of the designated JDBC <code>INTEGER</code> parameter
       
   224      * as an <code>int</code> in the Java programming language.
       
   225      *
       
   226      * @param parameterIndex the first parameter is 1, the second is 2,
       
   227      * and so on
       
   228      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   229      * is <code>0</code>.
       
   230      * @exception SQLException if the parameterIndex is not valid;
       
   231      * if a database access error occurs or
       
   232      * this method is called on a closed <code>CallableStatement</code>
       
   233      * @see #setInt
       
   234      */
       
   235     int getInt(int parameterIndex) throws SQLException;
       
   236 
       
   237     /**
       
   238      * Retrieves the value of the designated JDBC <code>BIGINT</code> parameter
       
   239      * as a <code>long</code> in the Java programming language.
       
   240      *
       
   241      * @param parameterIndex the first parameter is 1, the second is 2,
       
   242      * and so on
       
   243      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   244      * is <code>0</code>.
       
   245      * @exception SQLException if the parameterIndex is not valid;
       
   246      * if a database access error occurs or
       
   247      * this method is called on a closed <code>CallableStatement</code>
       
   248      * @see #setLong
       
   249      */
       
   250     long getLong(int parameterIndex) throws SQLException;
       
   251 
       
   252     /**
       
   253      * Retrieves the value of the designated JDBC <code>FLOAT</code> parameter
       
   254      * as a <code>float</code> in the Java programming language.
       
   255      *
       
   256      * @param parameterIndex the first parameter is 1, the second is 2,
       
   257      *        and so on
       
   258      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   259      *         is <code>0</code>.
       
   260      * @exception SQLException if the parameterIndex is not valid;
       
   261      * if a database access error occurs or
       
   262      * this method is called on a closed <code>CallableStatement</code>
       
   263      * @see #setFloat
       
   264      */
       
   265     float getFloat(int parameterIndex) throws SQLException;
       
   266 
       
   267     /**
       
   268      * Retrieves the value of the designated JDBC <code>DOUBLE</code> parameter as a <code>double</code>
       
   269      * in the Java programming language.
       
   270      * @param parameterIndex the first parameter is 1, the second is 2,
       
   271      *        and so on
       
   272      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   273      *         is <code>0</code>.
       
   274      * @exception SQLException if the parameterIndex is not valid;
       
   275      * if a database access error occurs or
       
   276      * this method is called on a closed <code>CallableStatement</code>
       
   277      * @see #setDouble
       
   278      */
       
   279     double getDouble(int parameterIndex) throws SQLException;
       
   280 
       
   281     /**
       
   282      * Retrieves the value of the designated JDBC <code>NUMERIC</code> parameter as a
       
   283      * <code>java.math.BigDecimal</code> object with <i>scale</i> digits to
       
   284      * the right of the decimal point.
       
   285      * @param parameterIndex the first parameter is 1, the second is 2,
       
   286      *        and so on
       
   287      * @param scale the number of digits to the right of the decimal point
       
   288      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   289      *         is <code>null</code>.
       
   290      * @exception SQLException if the parameterIndex is not valid;
       
   291      * if a database access error occurs or
       
   292      * this method is called on a closed <code>CallableStatement</code>
       
   293      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   294      * this method
       
   295      * @deprecated use <code>getBigDecimal(int parameterIndex)</code>
       
   296      *             or <code>getBigDecimal(String parameterName)</code>
       
   297      * @see #setBigDecimal
       
   298      */
       
   299     @Deprecated(since="1.2")
       
   300     BigDecimal getBigDecimal(int parameterIndex, int scale)
       
   301         throws SQLException;
       
   302 
       
   303     /**
       
   304      * Retrieves the value of the designated JDBC <code>BINARY</code> or
       
   305      * <code>VARBINARY</code> parameter as an array of <code>byte</code>
       
   306      * values in the Java programming language.
       
   307      * @param parameterIndex the first parameter is 1, the second is 2,
       
   308      *        and so on
       
   309      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   310      *         is <code>null</code>.
       
   311      * @exception SQLException if the parameterIndex is not valid;
       
   312      * if a database access error occurs or
       
   313      * this method is called on a closed <code>CallableStatement</code>
       
   314      * @see #setBytes
       
   315      */
       
   316     byte[] getBytes(int parameterIndex) throws SQLException;
       
   317 
       
   318     /**
       
   319      * Retrieves the value of the designated JDBC <code>DATE</code> parameter as a
       
   320      * <code>java.sql.Date</code> object.
       
   321      * @param parameterIndex the first parameter is 1, the second is 2,
       
   322      *        and so on
       
   323      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   324      *         is <code>null</code>.
       
   325      * @exception SQLException if the parameterIndex is not valid;
       
   326      * if a database access error occurs or
       
   327      * this method is called on a closed <code>CallableStatement</code>
       
   328      * @see #setDate
       
   329      */
       
   330     java.sql.Date getDate(int parameterIndex) throws SQLException;
       
   331 
       
   332     /**
       
   333      * Retrieves the value of the designated JDBC <code>TIME</code> parameter as a
       
   334      * <code>java.sql.Time</code> object.
       
   335      *
       
   336      * @param parameterIndex the first parameter is 1, the second is 2,
       
   337      *        and so on
       
   338      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   339      *         is <code>null</code>.
       
   340      * @exception SQLException if the parameterIndex is not valid;
       
   341      * if a database access error occurs or
       
   342      * this method is called on a closed <code>CallableStatement</code>
       
   343      * @see #setTime
       
   344      */
       
   345     java.sql.Time getTime(int parameterIndex) throws SQLException;
       
   346 
       
   347     /**
       
   348      * Retrieves the value of the designated JDBC <code>TIMESTAMP</code> parameter as a
       
   349      * <code>java.sql.Timestamp</code> object.
       
   350      *
       
   351      * @param parameterIndex the first parameter is 1, the second is 2,
       
   352      *        and so on
       
   353      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   354      *         is <code>null</code>.
       
   355      * @exception SQLException if the parameterIndex is not valid;
       
   356      * if a database access error occurs or
       
   357      * this method is called on a closed <code>CallableStatement</code>
       
   358      * @see #setTimestamp
       
   359      */
       
   360     java.sql.Timestamp getTimestamp(int parameterIndex)
       
   361         throws SQLException;
       
   362 
       
   363     //----------------------------------------------------------------------
       
   364     // Advanced features:
       
   365 
       
   366 
       
   367     /**
       
   368      * Retrieves the value of the designated parameter as an <code>Object</code>
       
   369      * in the Java programming language. If the value is an SQL <code>NULL</code>,
       
   370      * the driver returns a Java <code>null</code>.
       
   371      * <p>
       
   372      * This method returns a Java object whose type corresponds to the JDBC
       
   373      * type that was registered for this parameter using the method
       
   374      * <code>registerOutParameter</code>.  By registering the target JDBC
       
   375      * type as <code>java.sql.Types.OTHER</code>, this method can be used
       
   376      * to read database-specific abstract data types.
       
   377      *
       
   378      * @param parameterIndex the first parameter is 1, the second is 2,
       
   379      *        and so on
       
   380      * @return A <code>java.lang.Object</code> holding the OUT parameter value
       
   381      * @exception SQLException if the parameterIndex is not valid;
       
   382      * if a database access error occurs or
       
   383      * this method is called on a closed <code>CallableStatement</code>
       
   384      * @see Types
       
   385      * @see #setObject
       
   386      */
       
   387     Object getObject(int parameterIndex) throws SQLException;
       
   388 
       
   389 
       
   390     //--------------------------JDBC 2.0-----------------------------
       
   391 
       
   392     /**
       
   393      * Retrieves the value of the designated JDBC <code>NUMERIC</code> parameter as a
       
   394      * <code>java.math.BigDecimal</code> object with as many digits to the
       
   395      * right of the decimal point as the value contains.
       
   396      * @param parameterIndex the first parameter is 1, the second is 2,
       
   397      * and so on
       
   398      * @return the parameter value in full precision.  If the value is
       
   399      * SQL <code>NULL</code>, the result is <code>null</code>.
       
   400      * @exception SQLException if the parameterIndex is not valid;
       
   401      * if a database access error occurs or
       
   402      * this method is called on a closed <code>CallableStatement</code>
       
   403      * @see #setBigDecimal
       
   404      * @since 1.2
       
   405      */
       
   406     BigDecimal getBigDecimal(int parameterIndex) throws SQLException;
       
   407 
       
   408     /**
       
   409      * Returns an object representing the value of OUT parameter
       
   410      * <code>parameterIndex</code> and uses <code>map</code> for the custom
       
   411      * mapping of the parameter value.
       
   412      * <p>
       
   413      * This method returns a Java object whose type corresponds to the
       
   414      * JDBC type that was registered for this parameter using the method
       
   415      * <code>registerOutParameter</code>.  By registering the target
       
   416      * JDBC type as <code>java.sql.Types.OTHER</code>, this method can
       
   417      * be used to read database-specific abstract data types.
       
   418      * @param parameterIndex the first parameter is 1, the second is 2, and so on
       
   419      * @param map the mapping from SQL type names to Java classes
       
   420      * @return a <code>java.lang.Object</code> holding the OUT parameter value
       
   421      * @exception SQLException if the parameterIndex is not valid;
       
   422      * if a database access error occurs or
       
   423      * this method is called on a closed <code>CallableStatement</code>
       
   424      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   425      * this method
       
   426      * @see #setObject
       
   427      * @since 1.2
       
   428      */
       
   429     Object getObject(int parameterIndex, java.util.Map<String,Class<?>> map)
       
   430         throws SQLException;
       
   431 
       
   432     /**
       
   433      * Retrieves the value of the designated JDBC <code>REF(&lt;structured-type&gt;)</code>
       
   434      * parameter as a {@link java.sql.Ref} object in the Java programming language.
       
   435      * @param parameterIndex the first parameter is 1, the second is 2,
       
   436      * and so on
       
   437      * @return the parameter value as a <code>Ref</code> object in the
       
   438      * Java programming language.  If the value was SQL <code>NULL</code>, the value
       
   439      * <code>null</code> is returned.
       
   440      * @exception SQLException if the parameterIndex is not valid;
       
   441      * if a database access error occurs or
       
   442      * this method is called on a closed <code>CallableStatement</code>
       
   443      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   444      * this method
       
   445      * @since 1.2
       
   446      */
       
   447     Ref getRef (int parameterIndex) throws SQLException;
       
   448 
       
   449     /**
       
   450      * Retrieves the value of the designated JDBC <code>BLOB</code> parameter as a
       
   451      * {@link java.sql.Blob} object in the Java programming language.
       
   452      * @param parameterIndex the first parameter is 1, the second is 2, and so on
       
   453      * @return the parameter value as a <code>Blob</code> object in the
       
   454      * Java programming language.  If the value was SQL <code>NULL</code>, the value
       
   455      * <code>null</code> is returned.
       
   456      * @exception SQLException if the parameterIndex is not valid;
       
   457      * if a database access error occurs or
       
   458      * this method is called on a closed <code>CallableStatement</code>
       
   459      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   460      * this method
       
   461      * @since 1.2
       
   462      */
       
   463     Blob getBlob (int parameterIndex) throws SQLException;
       
   464 
       
   465     /**
       
   466      * Retrieves the value of the designated JDBC <code>CLOB</code> parameter as a
       
   467      * <code>java.sql.Clob</code> object in the Java programming language.
       
   468      * @param parameterIndex the first parameter is 1, the second is 2, and
       
   469      * so on
       
   470      * @return the parameter value as a <code>Clob</code> object in the
       
   471      * Java programming language.  If the value was SQL <code>NULL</code>, the
       
   472      * value <code>null</code> is returned.
       
   473      * @exception SQLException if the parameterIndex is not valid;
       
   474      * if a database access error occurs or
       
   475      * this method is called on a closed <code>CallableStatement</code>
       
   476      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   477      * this method
       
   478      * @since 1.2
       
   479      */
       
   480     Clob getClob (int parameterIndex) throws SQLException;
       
   481 
       
   482     /**
       
   483      *
       
   484      * Retrieves the value of the designated JDBC <code>ARRAY</code> parameter as an
       
   485      * {@link java.sql.Array} object in the Java programming language.
       
   486      * @param parameterIndex the first parameter is 1, the second is 2, and
       
   487      * so on
       
   488      * @return the parameter value as an <code>Array</code> object in
       
   489      * the Java programming language.  If the value was SQL <code>NULL</code>, the
       
   490      * value <code>null</code> is returned.
       
   491      * @exception SQLException if the parameterIndex is not valid;
       
   492      * if a database access error occurs or
       
   493      * this method is called on a closed <code>CallableStatement</code>
       
   494      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   495      * this method
       
   496      * @since 1.2
       
   497      */
       
   498     Array getArray (int parameterIndex) throws SQLException;
       
   499 
       
   500     /**
       
   501      * Retrieves the value of the designated JDBC <code>DATE</code> parameter as a
       
   502      * <code>java.sql.Date</code> object, using
       
   503      * the given <code>Calendar</code> object
       
   504      * to construct the date.
       
   505      * With a <code>Calendar</code> object, the driver
       
   506      * can calculate the date taking into account a custom timezone and locale.
       
   507      * If no <code>Calendar</code> object is specified, the driver uses the
       
   508      * default timezone and locale.
       
   509      *
       
   510      * @param parameterIndex the first parameter is 1, the second is 2,
       
   511      * and so on
       
   512      * @param cal the <code>Calendar</code> object the driver will use
       
   513      *            to construct the date
       
   514      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   515      *         is <code>null</code>.
       
   516      * @exception SQLException if the parameterIndex is not valid;
       
   517      * if a database access error occurs or
       
   518      * this method is called on a closed <code>CallableStatement</code>
       
   519      * @see #setDate
       
   520      * @since 1.2
       
   521      */
       
   522     java.sql.Date getDate(int parameterIndex, Calendar cal)
       
   523         throws SQLException;
       
   524 
       
   525     /**
       
   526      * Retrieves the value of the designated JDBC <code>TIME</code> parameter as a
       
   527      * <code>java.sql.Time</code> object, using
       
   528      * the given <code>Calendar</code> object
       
   529      * to construct the time.
       
   530      * With a <code>Calendar</code> object, the driver
       
   531      * can calculate the time taking into account a custom timezone and locale.
       
   532      * If no <code>Calendar</code> object is specified, the driver uses the
       
   533      * default timezone and locale.
       
   534      *
       
   535      * @param parameterIndex the first parameter is 1, the second is 2,
       
   536      * and so on
       
   537      * @param cal the <code>Calendar</code> object the driver will use
       
   538      *            to construct the time
       
   539      * @return the parameter value; if the value is SQL <code>NULL</code>, the result
       
   540      *         is <code>null</code>.
       
   541      * @exception SQLException if the parameterIndex is not valid;
       
   542      * if a database access error occurs or
       
   543      * this method is called on a closed <code>CallableStatement</code>
       
   544      * @see #setTime
       
   545      * @since 1.2
       
   546      */
       
   547     java.sql.Time getTime(int parameterIndex, Calendar cal)
       
   548         throws SQLException;
       
   549 
       
   550     /**
       
   551      * Retrieves the value of the designated JDBC <code>TIMESTAMP</code> parameter as a
       
   552      * <code>java.sql.Timestamp</code> object, using
       
   553      * the given <code>Calendar</code> object to construct
       
   554      * the <code>Timestamp</code> object.
       
   555      * With a <code>Calendar</code> object, the driver
       
   556      * can calculate the timestamp taking into account a custom timezone and locale.
       
   557      * If no <code>Calendar</code> object is specified, the driver uses the
       
   558      * default timezone and locale.
       
   559      *
       
   560      *
       
   561      * @param parameterIndex the first parameter is 1, the second is 2,
       
   562      * and so on
       
   563      * @param cal the <code>Calendar</code> object the driver will use
       
   564      *            to construct the timestamp
       
   565      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
   566      *         is <code>null</code>.
       
   567      * @exception SQLException if the parameterIndex is not valid;
       
   568      * if a database access error occurs or
       
   569      * this method is called on a closed <code>CallableStatement</code>
       
   570      * @see #setTimestamp
       
   571      * @since 1.2
       
   572      */
       
   573     java.sql.Timestamp getTimestamp(int parameterIndex, Calendar cal)
       
   574         throws SQLException;
       
   575 
       
   576 
       
   577     /**
       
   578      * Registers the designated output parameter.
       
   579      * This version of
       
   580      * the method <code>registerOutParameter</code>
       
   581      * should be used for a user-defined or <code>REF</code> output parameter.  Examples
       
   582      * of user-defined types include: <code>STRUCT</code>, <code>DISTINCT</code>,
       
   583      * <code>JAVA_OBJECT</code>, and named array types.
       
   584      *<p>
       
   585      * All OUT parameters must be registered
       
   586      * before a stored procedure is executed.
       
   587      * <p>  For a user-defined parameter, the fully-qualified SQL
       
   588      * type name of the parameter should also be given, while a <code>REF</code>
       
   589      * parameter requires that the fully-qualified type name of the
       
   590      * referenced type be given.  A JDBC driver that does not need the
       
   591      * type code and type name information may ignore it.   To be portable,
       
   592      * however, applications should always provide these values for
       
   593      * user-defined and <code>REF</code> parameters.
       
   594      *
       
   595      * Although it is intended for user-defined and <code>REF</code> parameters,
       
   596      * this method may be used to register a parameter of any JDBC type.
       
   597      * If the parameter does not have a user-defined or <code>REF</code> type, the
       
   598      * <i>typeName</i> parameter is ignored.
       
   599      *
       
   600      * <P><B>Note:</B> When reading the value of an out parameter, you
       
   601      * must use the getter method whose Java type corresponds to the
       
   602      * parameter's registered SQL type.
       
   603      *
       
   604      * @param parameterIndex the first parameter is 1, the second is 2,...
       
   605      * @param sqlType a value from {@link java.sql.Types}
       
   606      * @param typeName the fully-qualified name of an SQL structured type
       
   607      * @exception SQLException if the parameterIndex is not valid;
       
   608      * if a database access error occurs or
       
   609      * this method is called on a closed <code>CallableStatement</code>
       
   610      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
   611      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
   612      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
   613      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
   614      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
   615      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   616      * this data type
       
   617      * @see Types
       
   618      * @since 1.2
       
   619      */
       
   620     void registerOutParameter (int parameterIndex, int sqlType, String typeName)
       
   621         throws SQLException;
       
   622 
       
   623   //--------------------------JDBC 3.0-----------------------------
       
   624 
       
   625     /**
       
   626      * Registers the OUT parameter named
       
   627      * <code>parameterName</code> to the JDBC type
       
   628      * <code>sqlType</code>.  All OUT parameters must be registered
       
   629      * before a stored procedure is executed.
       
   630      * <p>
       
   631      * The JDBC type specified by <code>sqlType</code> for an OUT
       
   632      * parameter determines the Java type that must be used
       
   633      * in the <code>get</code> method to read the value of that parameter.
       
   634      * <p>
       
   635      * If the JDBC type expected to be returned to this output parameter
       
   636      * is specific to this particular database, <code>sqlType</code>
       
   637      * should be <code>java.sql.Types.OTHER</code>.  The method
       
   638      * {@link #getObject} retrieves the value.
       
   639      * @param parameterName the name of the parameter
       
   640      * @param sqlType the JDBC type code defined by <code>java.sql.Types</code>.
       
   641      * If the parameter is of JDBC type <code>NUMERIC</code>
       
   642      * or <code>DECIMAL</code>, the version of
       
   643      * <code>registerOutParameter</code> that accepts a scale value
       
   644      * should be used.
       
   645      * @exception SQLException if parameterName does not correspond to a named
       
   646      * parameter; if a database access error occurs or
       
   647      * this method is called on a closed <code>CallableStatement</code>
       
   648      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
   649      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
   650      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
   651      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
   652      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
   653      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   654      * this data type or if the JDBC driver does not support
       
   655      * this method
       
   656      * @since 1.4
       
   657      * @see Types
       
   658      */
       
   659     void registerOutParameter(String parameterName, int sqlType)
       
   660         throws SQLException;
       
   661 
       
   662     /**
       
   663      * Registers the parameter named
       
   664      * <code>parameterName</code> to be of JDBC type
       
   665      * <code>sqlType</code>.  All OUT parameters must be registered
       
   666      * before a stored procedure is executed.
       
   667      * <p>
       
   668      * The JDBC type specified by <code>sqlType</code> for an OUT
       
   669      * parameter determines the Java type that must be used
       
   670      * in the <code>get</code> method to read the value of that parameter.
       
   671      * <p>
       
   672      * This version of <code>registerOutParameter</code> should be
       
   673      * used when the parameter is of JDBC type <code>NUMERIC</code>
       
   674      * or <code>DECIMAL</code>.
       
   675      *
       
   676      * @param parameterName the name of the parameter
       
   677      * @param sqlType SQL type code defined by <code>java.sql.Types</code>.
       
   678      * @param scale the desired number of digits to the right of the
       
   679      * decimal point.  It must be greater than or equal to zero.
       
   680      * @exception SQLException if parameterName does not correspond to a named
       
   681      * parameter; if a database access error occurs or
       
   682      * this method is called on a closed <code>CallableStatement</code>
       
   683      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
   684      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
   685      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
   686      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
   687      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
   688      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   689      * this data type or if the JDBC driver does not support
       
   690      * this method
       
   691      * @since 1.4
       
   692      * @see Types
       
   693      */
       
   694     void registerOutParameter(String parameterName, int sqlType, int scale)
       
   695         throws SQLException;
       
   696 
       
   697     /**
       
   698      * Registers the designated output parameter.  This version of
       
   699      * the method <code>registerOutParameter</code>
       
   700      * should be used for a user-named or REF output parameter.  Examples
       
   701      * of user-named types include: STRUCT, DISTINCT, JAVA_OBJECT, and
       
   702      * named array types.
       
   703      *<p>
       
   704      * All OUT parameters must be registered
       
   705      * before a stored procedure is executed.
       
   706      * <p>
       
   707      * For a user-named parameter the fully-qualified SQL
       
   708      * type name of the parameter should also be given, while a REF
       
   709      * parameter requires that the fully-qualified type name of the
       
   710      * referenced type be given.  A JDBC driver that does not need the
       
   711      * type code and type name information may ignore it.   To be portable,
       
   712      * however, applications should always provide these values for
       
   713      * user-named and REF parameters.
       
   714      *
       
   715      * Although it is intended for user-named and REF parameters,
       
   716      * this method may be used to register a parameter of any JDBC type.
       
   717      * If the parameter does not have a user-named or REF type, the
       
   718      * typeName parameter is ignored.
       
   719      *
       
   720      * <P><B>Note:</B> When reading the value of an out parameter, you
       
   721      * must use the <code>getXXX</code> method whose Java type XXX corresponds to the
       
   722      * parameter's registered SQL type.
       
   723      *
       
   724      * @param parameterName the name of the parameter
       
   725      * @param sqlType a value from {@link java.sql.Types}
       
   726      * @param typeName the fully-qualified name of an SQL structured type
       
   727      * @exception SQLException if parameterName does not correspond to a named
       
   728      * parameter; if a database access error occurs or
       
   729      * this method is called on a closed <code>CallableStatement</code>
       
   730      * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
       
   731      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
   732      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
   733      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
   734      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
   735      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
   736      * this data type or if the JDBC driver does not support
       
   737      * this method
       
   738      * @see Types
       
   739      * @since 1.4
       
   740      */
       
   741     void registerOutParameter (String parameterName, int sqlType, String typeName)
       
   742         throws SQLException;
       
   743 
       
   744     /**
       
   745      * Retrieves the value of the designated JDBC <code>DATALINK</code> parameter as a
       
   746      * <code>java.net.URL</code> object.
       
   747      *
       
   748      * @param parameterIndex the first parameter is 1, the second is 2,...
       
   749      * @return a <code>java.net.URL</code> object that represents the
       
   750      *         JDBC <code>DATALINK</code> value used as the designated
       
   751      *         parameter
       
   752      * @exception SQLException if the parameterIndex is not valid;
       
   753      * if a database access error occurs,
       
   754      * this method is called on a closed <code>CallableStatement</code>,
       
   755      *            or if the URL being returned is
       
   756      *            not a valid URL on the Java platform
       
   757      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   758      * this method
       
   759      * @see #setURL
       
   760      * @since 1.4
       
   761      */
       
   762     java.net.URL getURL(int parameterIndex) throws SQLException;
       
   763 
       
   764     /**
       
   765      * Sets the designated parameter to the given <code>java.net.URL</code> object.
       
   766      * The driver converts this to an SQL <code>DATALINK</code> value when
       
   767      * it sends it to the database.
       
   768      *
       
   769      * @param parameterName the name of the parameter
       
   770      * @param val the parameter value
       
   771      * @exception SQLException if parameterName does not correspond to a named
       
   772      * parameter; if a database access error occurs;
       
   773      * this method is called on a closed <code>CallableStatement</code>
       
   774      *            or if a URL is malformed
       
   775      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   776      * this method
       
   777      * @see #getURL
       
   778      * @since 1.4
       
   779      */
       
   780     void setURL(String parameterName, java.net.URL val) throws SQLException;
       
   781 
       
   782     /**
       
   783      * Sets the designated parameter to SQL <code>NULL</code>.
       
   784      *
       
   785      * <P><B>Note:</B> You must specify the parameter's SQL type.
       
   786      *
       
   787      * @param parameterName the name of the parameter
       
   788      * @param sqlType the SQL type code defined in <code>java.sql.Types</code>
       
   789      * @exception SQLException if parameterName does not correspond to a named
       
   790      * parameter; if a database access error occurs or
       
   791      * this method is called on a closed <code>CallableStatement</code>
       
   792      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   793      * this method
       
   794      * @since 1.4
       
   795      */
       
   796     void setNull(String parameterName, int sqlType) throws SQLException;
       
   797 
       
   798     /**
       
   799      * Sets the designated parameter to the given Java <code>boolean</code> value.
       
   800      * The driver converts this
       
   801      * to an SQL <code>BIT</code> or <code>BOOLEAN</code> value when it sends it to the database.
       
   802      *
       
   803      * @param parameterName the name of the parameter
       
   804      * @param x the parameter value
       
   805      * @exception SQLException if parameterName does not correspond to a named
       
   806      * parameter; if a database access error occurs or
       
   807      * this method is called on a closed <code>CallableStatement</code>
       
   808      * @see #getBoolean
       
   809      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   810      * this method
       
   811      * @since 1.4
       
   812      */
       
   813     void setBoolean(String parameterName, boolean x) throws SQLException;
       
   814 
       
   815     /**
       
   816      * Sets the designated parameter to the given Java <code>byte</code> value.
       
   817      * The driver converts this
       
   818      * to an SQL <code>TINYINT</code> value when it sends it to the database.
       
   819      *
       
   820      * @param parameterName the name of the parameter
       
   821      * @param x the parameter value
       
   822      * @exception SQLException if parameterName does not correspond to a named
       
   823      * parameter; if a database access error occurs or
       
   824      * this method is called on a closed <code>CallableStatement</code>
       
   825      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   826      * this method
       
   827      * @see #getByte
       
   828      * @since 1.4
       
   829      */
       
   830     void setByte(String parameterName, byte x) throws SQLException;
       
   831 
       
   832     /**
       
   833      * Sets the designated parameter to the given Java <code>short</code> value.
       
   834      * The driver converts this
       
   835      * to an SQL <code>SMALLINT</code> value when it sends it to the database.
       
   836      *
       
   837      * @param parameterName the name of the parameter
       
   838      * @param x the parameter value
       
   839      * @exception SQLException if parameterName does not correspond to a named
       
   840      * parameter; if a database access error occurs or
       
   841      * this method is called on a closed <code>CallableStatement</code>
       
   842      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   843      * this method
       
   844      * @see #getShort
       
   845      * @since 1.4
       
   846      */
       
   847     void setShort(String parameterName, short x) throws SQLException;
       
   848 
       
   849     /**
       
   850      * Sets the designated parameter to the given Java <code>int</code> value.
       
   851      * The driver converts this
       
   852      * to an SQL <code>INTEGER</code> value when it sends it to the database.
       
   853      *
       
   854      * @param parameterName the name of the parameter
       
   855      * @param x the parameter value
       
   856      * @exception SQLException if parameterName does not correspond to a named
       
   857      * parameter; if a database access error occurs or
       
   858      * this method is called on a closed <code>CallableStatement</code>
       
   859      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   860      * this method
       
   861      * @see #getInt
       
   862      * @since 1.4
       
   863      */
       
   864     void setInt(String parameterName, int x) throws SQLException;
       
   865 
       
   866     /**
       
   867      * Sets the designated parameter to the given Java <code>long</code> value.
       
   868      * The driver converts this
       
   869      * to an SQL <code>BIGINT</code> value when it sends it to the database.
       
   870      *
       
   871      * @param parameterName the name of the parameter
       
   872      * @param x the parameter value
       
   873      * @exception SQLException if parameterName does not correspond to a named
       
   874      * parameter; if a database access error occurs or
       
   875      * this method is called on a closed <code>CallableStatement</code>
       
   876      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   877      * this method
       
   878      * @see #getLong
       
   879      * @since 1.4
       
   880      */
       
   881     void setLong(String parameterName, long x) throws SQLException;
       
   882 
       
   883     /**
       
   884      * Sets the designated parameter to the given Java <code>float</code> value.
       
   885      * The driver converts this
       
   886      * to an SQL <code>FLOAT</code> value when it sends it to the database.
       
   887      *
       
   888      * @param parameterName the name of the parameter
       
   889      * @param x the parameter value
       
   890      * @exception SQLException if parameterName does not correspond to a named
       
   891      * parameter; if a database access error occurs or
       
   892      * this method is called on a closed <code>CallableStatement</code>
       
   893      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   894      * this method
       
   895      * @see #getFloat
       
   896      * @since 1.4
       
   897      */
       
   898     void setFloat(String parameterName, float x) throws SQLException;
       
   899 
       
   900     /**
       
   901      * Sets the designated parameter to the given Java <code>double</code> value.
       
   902      * The driver converts this
       
   903      * to an SQL <code>DOUBLE</code> value when it sends it to the database.
       
   904      *
       
   905      * @param parameterName the name of the parameter
       
   906      * @param x the parameter value
       
   907      * @exception SQLException if parameterName does not correspond to a named
       
   908      * parameter; if a database access error occurs or
       
   909      * this method is called on a closed <code>CallableStatement</code>
       
   910      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   911      * this method
       
   912      * @see #getDouble
       
   913      * @since 1.4
       
   914      */
       
   915     void setDouble(String parameterName, double x) throws SQLException;
       
   916 
       
   917     /**
       
   918      * Sets the designated parameter to the given
       
   919      * <code>java.math.BigDecimal</code> value.
       
   920      * The driver converts this to an SQL <code>NUMERIC</code> value when
       
   921      * it sends it to the database.
       
   922      *
       
   923      * @param parameterName the name of the parameter
       
   924      * @param x the parameter value
       
   925      * @exception SQLException if parameterName does not correspond to a named
       
   926      * parameter; if a database access error occurs or
       
   927      * this method is called on a closed <code>CallableStatement</code>
       
   928      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   929      * this method
       
   930      * @see #getBigDecimal
       
   931      * @since 1.4
       
   932      */
       
   933     void setBigDecimal(String parameterName, BigDecimal x) throws SQLException;
       
   934 
       
   935     /**
       
   936      * Sets the designated parameter to the given Java <code>String</code> value.
       
   937      * The driver converts this
       
   938      * to an SQL <code>VARCHAR</code> or <code>LONGVARCHAR</code> value
       
   939      * (depending on the argument's
       
   940      * size relative to the driver's limits on <code>VARCHAR</code> values)
       
   941      * when it sends it to the database.
       
   942      *
       
   943      * @param parameterName the name of the parameter
       
   944      * @param x the parameter value
       
   945      * @exception SQLException if parameterName does not correspond to a named
       
   946      * parameter; if a database access error occurs or
       
   947      * this method is called on a closed <code>CallableStatement</code>
       
   948      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   949      * this method
       
   950      * @see #getString
       
   951      * @since 1.4
       
   952      */
       
   953     void setString(String parameterName, String x) throws SQLException;
       
   954 
       
   955     /**
       
   956      * Sets the designated parameter to the given Java array of bytes.
       
   957      * The driver converts this to an SQL <code>VARBINARY</code> or
       
   958      * <code>LONGVARBINARY</code> (depending on the argument's size relative
       
   959      * to the driver's limits on <code>VARBINARY</code> values) when it sends
       
   960      * it to the database.
       
   961      *
       
   962      * @param parameterName the name of the parameter
       
   963      * @param x the parameter value
       
   964      * @exception SQLException if parameterName does not correspond to a named
       
   965      * parameter; if a database access error occurs or
       
   966      * this method is called on a closed <code>CallableStatement</code>
       
   967      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   968      * this method
       
   969      * @see #getBytes
       
   970      * @since 1.4
       
   971      */
       
   972     void setBytes(String parameterName, byte x[]) throws SQLException;
       
   973 
       
   974     /**
       
   975      * Sets the designated parameter to the given <code>java.sql.Date</code> value
       
   976      * using the default time zone of the virtual machine that is running
       
   977      * the application.
       
   978      * The driver converts this
       
   979      * to an SQL <code>DATE</code> value when it sends it to the database.
       
   980      *
       
   981      * @param parameterName the name of the parameter
       
   982      * @param x the parameter value
       
   983      * @exception SQLException if parameterName does not correspond to a named
       
   984      * parameter; if a database access error occurs or
       
   985      * this method is called on a closed <code>CallableStatement</code>
       
   986      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   987      * this method
       
   988      * @see #getDate
       
   989      * @since 1.4
       
   990      */
       
   991     void setDate(String parameterName, java.sql.Date x)
       
   992         throws SQLException;
       
   993 
       
   994     /**
       
   995      * Sets the designated parameter to the given <code>java.sql.Time</code> value.
       
   996      * The driver converts this
       
   997      * to an SQL <code>TIME</code> value when it sends it to the database.
       
   998      *
       
   999      * @param parameterName the name of the parameter
       
  1000      * @param x the parameter value
       
  1001      * @exception SQLException if parameterName does not correspond to a named
       
  1002      * parameter; if a database access error occurs or
       
  1003      * this method is called on a closed <code>CallableStatement</code>
       
  1004      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1005      * this method
       
  1006      * @see #getTime
       
  1007      * @since 1.4
       
  1008      */
       
  1009     void setTime(String parameterName, java.sql.Time x)
       
  1010         throws SQLException;
       
  1011 
       
  1012     /**
       
  1013      * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value.
       
  1014      * The driver
       
  1015      * converts this to an SQL <code>TIMESTAMP</code> value when it sends it to the
       
  1016      * database.
       
  1017      *
       
  1018      * @param parameterName the name of the parameter
       
  1019      * @param x the parameter value
       
  1020      * @exception SQLException if parameterName does not correspond to a named
       
  1021      * parameter; if a database access error occurs or
       
  1022      * this method is called on a closed <code>CallableStatement</code>
       
  1023      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1024      * this method
       
  1025      * @see #getTimestamp
       
  1026      * @since 1.4
       
  1027      */
       
  1028     void setTimestamp(String parameterName, java.sql.Timestamp x)
       
  1029         throws SQLException;
       
  1030 
       
  1031     /**
       
  1032      * Sets the designated parameter to the given input stream, which will have
       
  1033      * the specified number of bytes.
       
  1034      * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
  1035      * parameter, it may be more practical to send it via a
       
  1036      * <code>java.io.InputStream</code>. Data will be read from the stream
       
  1037      * as needed until end-of-file is reached.  The JDBC driver will
       
  1038      * do any necessary conversion from ASCII to the database char format.
       
  1039      *
       
  1040      * <P><B>Note:</B> This stream object can either be a standard
       
  1041      * Java stream object or your own subclass that implements the
       
  1042      * standard interface.
       
  1043      *
       
  1044      * @param parameterName the name of the parameter
       
  1045      * @param x the Java input stream that contains the ASCII parameter value
       
  1046      * @param length the number of bytes in the stream
       
  1047      * @exception SQLException if parameterName does not correspond to a named
       
  1048      * parameter; if a database access error occurs or
       
  1049      * this method is called on a closed <code>CallableStatement</code>
       
  1050      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1051      * this method
       
  1052      * @since 1.4
       
  1053      */
       
  1054     void setAsciiStream(String parameterName, java.io.InputStream x, int length)
       
  1055         throws SQLException;
       
  1056 
       
  1057     /**
       
  1058      * Sets the designated parameter to the given input stream, which will have
       
  1059      * the specified number of bytes.
       
  1060      * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
  1061      * parameter, it may be more practical to send it via a
       
  1062      * <code>java.io.InputStream</code> object. The data will be read from the stream
       
  1063      * as needed until end-of-file is reached.
       
  1064      *
       
  1065      * <P><B>Note:</B> This stream object can either be a standard
       
  1066      * Java stream object or your own subclass that implements the
       
  1067      * standard interface.
       
  1068      *
       
  1069      * @param parameterName the name of the parameter
       
  1070      * @param x the java input stream which contains the binary parameter value
       
  1071      * @param length the number of bytes in the stream
       
  1072      * @exception SQLException if parameterName does not correspond to a named
       
  1073      * parameter; if a database access error occurs or
       
  1074      * this method is called on a closed <code>CallableStatement</code>
       
  1075      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1076      * this method
       
  1077      * @since 1.4
       
  1078      */
       
  1079     void setBinaryStream(String parameterName, java.io.InputStream x,
       
  1080                          int length) throws SQLException;
       
  1081 
       
  1082     /**
       
  1083      * Sets the value of the designated parameter with the given object.
       
  1084      *
       
  1085      * <p>The given Java object will be converted to the given targetSqlType
       
  1086      * before being sent to the database.
       
  1087      *
       
  1088      * If the object has a custom mapping (is of a class implementing the
       
  1089      * interface <code>SQLData</code>),
       
  1090      * the JDBC driver should call the method <code>SQLData.writeSQL</code> to write it
       
  1091      * to the SQL data stream.
       
  1092      * If, on the other hand, the object is of a class implementing
       
  1093      * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1094      *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1095      * or <code>Array</code>, the driver should pass it to the database as a
       
  1096      * value of the corresponding SQL type.
       
  1097      * <P>
       
  1098      * Note that this method may be used to pass datatabase-
       
  1099      * specific abstract data types.
       
  1100      *
       
  1101      * @param parameterName the name of the parameter
       
  1102      * @param x the object containing the input parameter value
       
  1103      * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
       
  1104      * sent to the database. The scale argument may further qualify this type.
       
  1105      * @param scale for java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types,
       
  1106      *          this is the number of digits after the decimal point.  For all other
       
  1107      *          types, this value will be ignored.
       
  1108      * @exception SQLException if parameterName does not correspond to a named
       
  1109      * parameter; if a database access error occurs or
       
  1110      * this method is called on a closed <code>CallableStatement</code>
       
  1111      * @exception SQLFeatureNotSupportedException if
       
  1112      * the JDBC driver does not support the specified targetSqlType
       
  1113      * @see Types
       
  1114      * @see #getObject
       
  1115      * @since 1.4
       
  1116      */
       
  1117     void setObject(String parameterName, Object x, int targetSqlType, int scale)
       
  1118         throws SQLException;
       
  1119 
       
  1120     /**
       
  1121      * Sets the value of the designated parameter with the given object.
       
  1122      *
       
  1123      * This method is similar to {@link #setObject(String parameterName,
       
  1124      * Object x, int targetSqlType, int scaleOrLength)},
       
  1125      * except that it assumes a scale of zero.
       
  1126      *
       
  1127      * @param parameterName the name of the parameter
       
  1128      * @param x the object containing the input parameter value
       
  1129      * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
       
  1130      *                      sent to the database
       
  1131      * @exception SQLException if parameterName does not correspond to a named
       
  1132      * parameter; if a database access error occurs or
       
  1133      * this method is called on a closed <code>CallableStatement</code>
       
  1134      * @exception SQLFeatureNotSupportedException if
       
  1135      * the JDBC driver does not support the specified targetSqlType
       
  1136      * @see #getObject
       
  1137      * @since 1.4
       
  1138      */
       
  1139     void setObject(String parameterName, Object x, int targetSqlType)
       
  1140         throws SQLException;
       
  1141 
       
  1142     /**
       
  1143      * Sets the value of the designated parameter with the given object.
       
  1144      *
       
  1145      * <p>The JDBC specification specifies a standard mapping from
       
  1146      * Java <code>Object</code> types to SQL types.  The given argument
       
  1147      * will be converted to the corresponding SQL type before being
       
  1148      * sent to the database.
       
  1149      * <p>Note that this method may be used to pass database-
       
  1150      * specific abstract data types, by using a driver-specific Java
       
  1151      * type.
       
  1152      *
       
  1153      * If the object is of a class implementing the interface <code>SQLData</code>,
       
  1154      * the JDBC driver should call the method <code>SQLData.writeSQL</code>
       
  1155      * to write it to the SQL data stream.
       
  1156      * If, on the other hand, the object is of a class implementing
       
  1157      * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1158      *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1159      * or <code>Array</code>, the driver should pass it to the database as a
       
  1160      * value of the corresponding SQL type.
       
  1161      * <P>
       
  1162      * This method throws an exception if there is an ambiguity, for example, if the
       
  1163      * object is of a class implementing more than one of the interfaces named above.
       
  1164      * <p>
       
  1165      *<b>Note:</b> Not all databases allow for a non-typed Null to be sent to
       
  1166      * the backend. For maximum portability, the <code>setNull</code> or the
       
  1167      * <code>setObject(String parameterName, Object x, int sqlType)</code>
       
  1168      * method should be used
       
  1169      * instead of <code>setObject(String parameterName, Object x)</code>.
       
  1170      *
       
  1171      * @param parameterName the name of the parameter
       
  1172      * @param x the object containing the input parameter value
       
  1173      * @exception SQLException if parameterName does not correspond to a named
       
  1174      * parameter; if a database access error occurs,
       
  1175      * this method is called on a closed <code>CallableStatement</code> or if the given
       
  1176      *            <code>Object</code> parameter is ambiguous
       
  1177      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1178      * this method
       
  1179      * @see #getObject
       
  1180      * @since 1.4
       
  1181      */
       
  1182     void setObject(String parameterName, Object x) throws SQLException;
       
  1183 
       
  1184 
       
  1185     /**
       
  1186      * Sets the designated parameter to the given <code>Reader</code>
       
  1187      * object, which is the given number of characters long.
       
  1188      * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
  1189      * parameter, it may be more practical to send it via a
       
  1190      * <code>java.io.Reader</code> object. The data will be read from the stream
       
  1191      * as needed until end-of-file is reached.  The JDBC driver will
       
  1192      * do any necessary conversion from UNICODE to the database char format.
       
  1193      *
       
  1194      * <P><B>Note:</B> This stream object can either be a standard
       
  1195      * Java stream object or your own subclass that implements the
       
  1196      * standard interface.
       
  1197      *
       
  1198      * @param parameterName the name of the parameter
       
  1199      * @param reader the <code>java.io.Reader</code> object that
       
  1200      *        contains the UNICODE data used as the designated parameter
       
  1201      * @param length the number of characters in the stream
       
  1202      * @exception SQLException if parameterName does not correspond to a named
       
  1203      * parameter; if a database access error occurs or
       
  1204      * this method is called on a closed <code>CallableStatement</code>
       
  1205      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1206      * this method
       
  1207      * @since 1.4
       
  1208      */
       
  1209     void setCharacterStream(String parameterName,
       
  1210                             java.io.Reader reader,
       
  1211                             int length) throws SQLException;
       
  1212 
       
  1213     /**
       
  1214      * Sets the designated parameter to the given <code>java.sql.Date</code> value,
       
  1215      * using the given <code>Calendar</code> object.  The driver uses
       
  1216      * the <code>Calendar</code> object to construct an SQL <code>DATE</code> value,
       
  1217      * which the driver then sends to the database.  With a
       
  1218      * a <code>Calendar</code> object, the driver can calculate the date
       
  1219      * taking into account a custom timezone.  If no
       
  1220      * <code>Calendar</code> object is specified, the driver uses the default
       
  1221      * timezone, which is that of the virtual machine running the application.
       
  1222      *
       
  1223      * @param parameterName the name of the parameter
       
  1224      * @param x the parameter value
       
  1225      * @param cal the <code>Calendar</code> object the driver will use
       
  1226      *            to construct the date
       
  1227      * @exception SQLException if parameterName does not correspond to a named
       
  1228      * parameter; if a database access error occurs or
       
  1229      * this method is called on a closed <code>CallableStatement</code>
       
  1230      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1231      * this method
       
  1232      * @see #getDate
       
  1233      * @since 1.4
       
  1234      */
       
  1235     void setDate(String parameterName, java.sql.Date x, Calendar cal)
       
  1236         throws SQLException;
       
  1237 
       
  1238     /**
       
  1239      * Sets the designated parameter to the given <code>java.sql.Time</code> value,
       
  1240      * using the given <code>Calendar</code> object.  The driver uses
       
  1241      * the <code>Calendar</code> object to construct an SQL <code>TIME</code> value,
       
  1242      * which the driver then sends to the database.  With a
       
  1243      * a <code>Calendar</code> object, the driver can calculate the time
       
  1244      * taking into account a custom timezone.  If no
       
  1245      * <code>Calendar</code> object is specified, the driver uses the default
       
  1246      * timezone, which is that of the virtual machine running the application.
       
  1247      *
       
  1248      * @param parameterName the name of the parameter
       
  1249      * @param x the parameter value
       
  1250      * @param cal the <code>Calendar</code> object the driver will use
       
  1251      *            to construct the time
       
  1252      * @exception SQLException if parameterName does not correspond to a named
       
  1253      * parameter; if a database access error occurs or
       
  1254      * this method is called on a closed <code>CallableStatement</code>
       
  1255      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1256      * this method
       
  1257      * @see #getTime
       
  1258      * @since 1.4
       
  1259      */
       
  1260     void setTime(String parameterName, java.sql.Time x, Calendar cal)
       
  1261         throws SQLException;
       
  1262 
       
  1263     /**
       
  1264      * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value,
       
  1265      * using the given <code>Calendar</code> object.  The driver uses
       
  1266      * the <code>Calendar</code> object to construct an SQL <code>TIMESTAMP</code> value,
       
  1267      * which the driver then sends to the database.  With a
       
  1268      * a <code>Calendar</code> object, the driver can calculate the timestamp
       
  1269      * taking into account a custom timezone.  If no
       
  1270      * <code>Calendar</code> object is specified, the driver uses the default
       
  1271      * timezone, which is that of the virtual machine running the application.
       
  1272      *
       
  1273      * @param parameterName the name of the parameter
       
  1274      * @param x the parameter value
       
  1275      * @param cal the <code>Calendar</code> object the driver will use
       
  1276      *            to construct the timestamp
       
  1277      * @exception SQLException if parameterName does not correspond to a named
       
  1278      * parameter; if a database access error occurs or
       
  1279      * this method is called on a closed <code>CallableStatement</code>
       
  1280      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1281      * this method
       
  1282      * @see #getTimestamp
       
  1283      * @since 1.4
       
  1284      */
       
  1285     void setTimestamp(String parameterName, java.sql.Timestamp x, Calendar cal)
       
  1286         throws SQLException;
       
  1287 
       
  1288     /**
       
  1289      * Sets the designated parameter to SQL <code>NULL</code>.
       
  1290      * This version of the method <code>setNull</code> should
       
  1291      * be used for user-defined types and REF type parameters.  Examples
       
  1292      * of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and
       
  1293      * named array types.
       
  1294      *
       
  1295      * <P><B>Note:</B> To be portable, applications must give the
       
  1296      * SQL type code and the fully-qualified SQL type name when specifying
       
  1297      * a NULL user-defined or REF parameter.  In the case of a user-defined type
       
  1298      * the name is the type name of the parameter itself.  For a REF
       
  1299      * parameter, the name is the type name of the referenced type.
       
  1300      * <p>
       
  1301      * Although it is intended for user-defined and Ref parameters,
       
  1302      * this method may be used to set a null parameter of any JDBC type.
       
  1303      * If the parameter does not have a user-defined or REF type, the given
       
  1304      * typeName is ignored.
       
  1305      *
       
  1306      *
       
  1307      * @param parameterName the name of the parameter
       
  1308      * @param sqlType a value from <code>java.sql.Types</code>
       
  1309      * @param typeName the fully-qualified name of an SQL user-defined type;
       
  1310      *        ignored if the parameter is not a user-defined type or
       
  1311      *        SQL <code>REF</code> value
       
  1312      * @exception SQLException if parameterName does not correspond to a named
       
  1313      * parameter; if a database access error occurs or
       
  1314      * this method is called on a closed <code>CallableStatement</code>
       
  1315      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1316      * this method
       
  1317      * @since 1.4
       
  1318      */
       
  1319     void setNull (String parameterName, int sqlType, String typeName)
       
  1320         throws SQLException;
       
  1321 
       
  1322     /**
       
  1323      * Retrieves the value of a JDBC <code>CHAR</code>, <code>VARCHAR</code>,
       
  1324      * or <code>LONGVARCHAR</code> parameter as a <code>String</code> in
       
  1325      * the Java programming language.
       
  1326      * <p>
       
  1327      * For the fixed-length type JDBC <code>CHAR</code>,
       
  1328      * the <code>String</code> object
       
  1329      * returned has exactly the same value the SQL
       
  1330      * <code>CHAR</code> value had in the
       
  1331      * database, including any padding added by the database.
       
  1332      * @param parameterName the name of the parameter
       
  1333      * @return the parameter value. If the value is SQL <code>NULL</code>, the result
       
  1334      * is <code>null</code>.
       
  1335      * @exception SQLException if parameterName does not correspond to a named
       
  1336      * parameter; if a database access error occurs or
       
  1337      * this method is called on a closed <code>CallableStatement</code>
       
  1338      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1339      * this method
       
  1340      * @see #setString
       
  1341      * @since 1.4
       
  1342      */
       
  1343     String getString(String parameterName) throws SQLException;
       
  1344 
       
  1345     /**
       
  1346      * Retrieves the value of a JDBC <code>BIT</code> or <code>BOOLEAN</code>
       
  1347      * parameter as a
       
  1348      * <code>boolean</code> in the Java programming language.
       
  1349      * @param parameterName the name of the parameter
       
  1350      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1351      * is <code>false</code>.
       
  1352      * @exception SQLException if parameterName does not correspond to a named
       
  1353      * parameter; if a database access error occurs or
       
  1354      * this method is called on a closed <code>CallableStatement</code>
       
  1355      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1356      * this method
       
  1357      * @see #setBoolean
       
  1358      * @since 1.4
       
  1359      */
       
  1360     boolean getBoolean(String parameterName) throws SQLException;
       
  1361 
       
  1362     /**
       
  1363      * Retrieves the value of a JDBC <code>TINYINT</code> parameter as a <code>byte</code>
       
  1364      * in the Java programming language.
       
  1365      * @param parameterName the name of the parameter
       
  1366      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1367      * is <code>0</code>.
       
  1368      * @exception SQLException if parameterName does not correspond to a named
       
  1369      * parameter; if a database access error occurs or
       
  1370      * this method is called on a closed <code>CallableStatement</code>
       
  1371      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1372      * this method
       
  1373      * @see #setByte
       
  1374      * @since 1.4
       
  1375      */
       
  1376     byte getByte(String parameterName) throws SQLException;
       
  1377 
       
  1378     /**
       
  1379      * Retrieves the value of a JDBC <code>SMALLINT</code> parameter as a <code>short</code>
       
  1380      * in the Java programming language.
       
  1381      * @param parameterName the name of the parameter
       
  1382      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1383      * is <code>0</code>.
       
  1384      * @exception SQLException if parameterName does not correspond to a named
       
  1385      * parameter; if a database access error occurs or
       
  1386      * this method is called on a closed <code>CallableStatement</code>
       
  1387      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1388      * this method
       
  1389      * @see #setShort
       
  1390      * @since 1.4
       
  1391      */
       
  1392     short getShort(String parameterName) throws SQLException;
       
  1393 
       
  1394     /**
       
  1395      * Retrieves the value of a JDBC <code>INTEGER</code> parameter as an <code>int</code>
       
  1396      * in the Java programming language.
       
  1397      *
       
  1398      * @param parameterName the name of the parameter
       
  1399      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
  1400      *         the result is <code>0</code>.
       
  1401      * @exception SQLException if parameterName does not correspond to a named
       
  1402      * parameter; if a database access error occurs or
       
  1403      * this method is called on a closed <code>CallableStatement</code>
       
  1404      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1405      * this method
       
  1406      * @see #setInt
       
  1407      * @since 1.4
       
  1408      */
       
  1409     int getInt(String parameterName) throws SQLException;
       
  1410 
       
  1411     /**
       
  1412      * Retrieves the value of a JDBC <code>BIGINT</code> parameter as a <code>long</code>
       
  1413      * in the Java programming language.
       
  1414      *
       
  1415      * @param parameterName the name of the parameter
       
  1416      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
  1417      *         the result is <code>0</code>.
       
  1418      * @exception SQLException if parameterName does not correspond to a named
       
  1419      * parameter; if a database access error occurs or
       
  1420      * this method is called on a closed <code>CallableStatement</code>
       
  1421      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1422      * this method
       
  1423      * @see #setLong
       
  1424      * @since 1.4
       
  1425      */
       
  1426     long getLong(String parameterName) throws SQLException;
       
  1427 
       
  1428     /**
       
  1429      * Retrieves the value of a JDBC <code>FLOAT</code> parameter as a <code>float</code>
       
  1430      * in the Java programming language.
       
  1431      * @param parameterName the name of the parameter
       
  1432      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
  1433      *         the result is <code>0</code>.
       
  1434      * @exception SQLException if parameterName does not correspond to a named
       
  1435      * parameter; if a database access error occurs or
       
  1436      * this method is called on a closed <code>CallableStatement</code>
       
  1437      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1438      * this method
       
  1439      * @see #setFloat
       
  1440      * @since 1.4
       
  1441      */
       
  1442     float getFloat(String parameterName) throws SQLException;
       
  1443 
       
  1444     /**
       
  1445      * Retrieves the value of a JDBC <code>DOUBLE</code> parameter as a <code>double</code>
       
  1446      * in the Java programming language.
       
  1447      * @param parameterName the name of the parameter
       
  1448      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
  1449      *         the result is <code>0</code>.
       
  1450      * @exception SQLException if parameterName does not correspond to a named
       
  1451      * parameter; if a database access error occurs or
       
  1452      * this method is called on a closed <code>CallableStatement</code>
       
  1453      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1454      * this method
       
  1455      * @see #setDouble
       
  1456      * @since 1.4
       
  1457      */
       
  1458     double getDouble(String parameterName) throws SQLException;
       
  1459 
       
  1460     /**
       
  1461      * Retrieves the value of a JDBC <code>BINARY</code> or <code>VARBINARY</code>
       
  1462      * parameter as an array of <code>byte</code> values in the Java
       
  1463      * programming language.
       
  1464      * @param parameterName the name of the parameter
       
  1465      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result is
       
  1466      *  <code>null</code>.
       
  1467      * @exception SQLException if parameterName does not correspond to a named
       
  1468      * parameter; if a database access error occurs or
       
  1469      * this method is called on a closed <code>CallableStatement</code>
       
  1470      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1471      * this method
       
  1472      * @see #setBytes
       
  1473      * @since 1.4
       
  1474      */
       
  1475     byte[] getBytes(String parameterName) throws SQLException;
       
  1476 
       
  1477     /**
       
  1478      * Retrieves the value of a JDBC <code>DATE</code> parameter as a
       
  1479      * <code>java.sql.Date</code> object.
       
  1480      * @param parameterName the name of the parameter
       
  1481      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1482      * is <code>null</code>.
       
  1483      * @exception SQLException if parameterName does not correspond to a named
       
  1484      * parameter; if a database access error occurs or
       
  1485      * this method is called on a closed <code>CallableStatement</code>
       
  1486      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1487      * this method
       
  1488      * @see #setDate
       
  1489      * @since 1.4
       
  1490      */
       
  1491     java.sql.Date getDate(String parameterName) throws SQLException;
       
  1492 
       
  1493     /**
       
  1494      * Retrieves the value of a JDBC <code>TIME</code> parameter as a
       
  1495      * <code>java.sql.Time</code> object.
       
  1496      * @param parameterName the name of the parameter
       
  1497      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1498      * is <code>null</code>.
       
  1499      * @exception SQLException if parameterName does not correspond to a named
       
  1500      * parameter; if a database access error occurs or
       
  1501      * this method is called on a closed <code>CallableStatement</code>
       
  1502      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1503      * this method
       
  1504      * @see #setTime
       
  1505      * @since 1.4
       
  1506      */
       
  1507     java.sql.Time getTime(String parameterName) throws SQLException;
       
  1508 
       
  1509     /**
       
  1510      * Retrieves the value of a JDBC <code>TIMESTAMP</code> parameter as a
       
  1511      * <code>java.sql.Timestamp</code> object.
       
  1512      * @param parameterName the name of the parameter
       
  1513      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result
       
  1514      * is <code>null</code>.
       
  1515      * @exception SQLException if parameterName does not correspond to a named
       
  1516      * parameter; if a database access error occurs or
       
  1517      * this method is called on a closed <code>CallableStatement</code>
       
  1518      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1519      * this method
       
  1520      * @see #setTimestamp
       
  1521      * @since 1.4
       
  1522      */
       
  1523     java.sql.Timestamp getTimestamp(String parameterName) throws SQLException;
       
  1524 
       
  1525     /**
       
  1526      * Retrieves the value of a parameter as an <code>Object</code> in the Java
       
  1527      * programming language. If the value is an SQL <code>NULL</code>, the
       
  1528      * driver returns a Java <code>null</code>.
       
  1529      * <p>
       
  1530      * This method returns a Java object whose type corresponds to the JDBC
       
  1531      * type that was registered for this parameter using the method
       
  1532      * <code>registerOutParameter</code>.  By registering the target JDBC
       
  1533      * type as <code>java.sql.Types.OTHER</code>, this method can be used
       
  1534      * to read database-specific abstract data types.
       
  1535      * @param parameterName the name of the parameter
       
  1536      * @return A <code>java.lang.Object</code> holding the OUT parameter value.
       
  1537      * @exception SQLException if parameterName does not correspond to a named
       
  1538      * parameter; if a database access error occurs or
       
  1539      * this method is called on a closed <code>CallableStatement</code>
       
  1540      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1541      * this method
       
  1542      * @see Types
       
  1543      * @see #setObject
       
  1544      * @since 1.4
       
  1545      */
       
  1546     Object getObject(String parameterName) throws SQLException;
       
  1547 
       
  1548     /**
       
  1549      * Retrieves the value of a JDBC <code>NUMERIC</code> parameter as a
       
  1550      * <code>java.math.BigDecimal</code> object with as many digits to the
       
  1551      * right of the decimal point as the value contains.
       
  1552      * @param parameterName the name of the parameter
       
  1553      * @return the parameter value in full precision.  If the value is
       
  1554      * SQL <code>NULL</code>, the result is <code>null</code>.
       
  1555      * @exception SQLException if parameterName does not correspond to a named
       
  1556      * parameter;  if a database access error occurs or
       
  1557      * this method is called on a closed <code>CallableStatement</code>
       
  1558      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1559      * this method
       
  1560      * @see #setBigDecimal
       
  1561      * @since 1.4
       
  1562      */
       
  1563     BigDecimal getBigDecimal(String parameterName) throws SQLException;
       
  1564 
       
  1565     /**
       
  1566      * Returns an object representing the value of OUT parameter
       
  1567      * <code>parameterName</code> and uses <code>map</code> for the custom
       
  1568      * mapping of the parameter value.
       
  1569      * <p>
       
  1570      * This method returns a Java object whose type corresponds to the
       
  1571      * JDBC type that was registered for this parameter using the method
       
  1572      * <code>registerOutParameter</code>.  By registering the target
       
  1573      * JDBC type as <code>java.sql.Types.OTHER</code>, this method can
       
  1574      * be used to read database-specific abstract data types.
       
  1575      * @param parameterName the name of the parameter
       
  1576      * @param map the mapping from SQL type names to Java classes
       
  1577      * @return a <code>java.lang.Object</code> holding the OUT parameter value
       
  1578      * @exception SQLException if parameterName does not correspond to a named
       
  1579      * parameter; if a database access error occurs or
       
  1580      * this method is called on a closed <code>CallableStatement</code>
       
  1581      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1582      * this method
       
  1583      * @see #setObject
       
  1584      * @since 1.4
       
  1585      */
       
  1586     Object getObject(String parameterName, java.util.Map<String,Class<?>> map)
       
  1587       throws SQLException;
       
  1588 
       
  1589     /**
       
  1590      * Retrieves the value of a JDBC <code>REF(&lt;structured-type&gt;)</code>
       
  1591      * parameter as a {@link java.sql.Ref} object in the Java programming language.
       
  1592      *
       
  1593      * @param parameterName the name of the parameter
       
  1594      * @return the parameter value as a <code>Ref</code> object in the
       
  1595      *         Java programming language.  If the value was SQL <code>NULL</code>,
       
  1596      *         the value <code>null</code> is returned.
       
  1597      * @exception SQLException if parameterName does not correspond to a named
       
  1598      * parameter; if a database access error occurs or
       
  1599      * this method is called on a closed <code>CallableStatement</code>
       
  1600      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1601      * this method
       
  1602      * @since 1.4
       
  1603      */
       
  1604     Ref getRef (String parameterName) throws SQLException;
       
  1605 
       
  1606     /**
       
  1607      * Retrieves the value of a JDBC <code>BLOB</code> parameter as a
       
  1608      * {@link java.sql.Blob} object in the Java programming language.
       
  1609      *
       
  1610      * @param parameterName the name of the parameter
       
  1611      * @return the parameter value as a <code>Blob</code> object in the
       
  1612      *         Java programming language.  If the value was SQL <code>NULL</code>,
       
  1613      *         the value <code>null</code> is returned.
       
  1614      * @exception SQLException if parameterName does not correspond to a named
       
  1615      * parameter; if a database access error occurs or
       
  1616      * this method is called on a closed <code>CallableStatement</code>
       
  1617      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1618      * this method
       
  1619      * @since 1.4
       
  1620      */
       
  1621     Blob getBlob (String parameterName) throws SQLException;
       
  1622 
       
  1623     /**
       
  1624      * Retrieves the value of a JDBC <code>CLOB</code> parameter as a
       
  1625      * <code>java.sql.Clob</code> object in the Java programming language.
       
  1626      * @param parameterName the name of the parameter
       
  1627      * @return the parameter value as a <code>Clob</code> object in the
       
  1628      *         Java programming language.  If the value was SQL <code>NULL</code>,
       
  1629      *         the value <code>null</code> is returned.
       
  1630      * @exception SQLException if parameterName does not correspond to a named
       
  1631      * parameter; if a database access error occurs or
       
  1632      * this method is called on a closed <code>CallableStatement</code>
       
  1633      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1634      * this method
       
  1635      * @since 1.4
       
  1636      */
       
  1637     Clob getClob (String parameterName) throws SQLException;
       
  1638 
       
  1639     /**
       
  1640      * Retrieves the value of a JDBC <code>ARRAY</code> parameter as an
       
  1641      * {@link java.sql.Array} object in the Java programming language.
       
  1642      *
       
  1643      * @param parameterName the name of the parameter
       
  1644      * @return the parameter value as an <code>Array</code> object in
       
  1645      *         Java programming language.  If the value was SQL <code>NULL</code>,
       
  1646      *         the value <code>null</code> is returned.
       
  1647      * @exception SQLException if parameterName does not correspond to a named
       
  1648      * parameter; if a database access error occurs or
       
  1649      * this method is called on a closed <code>CallableStatement</code>
       
  1650      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1651      * this method
       
  1652      * @since 1.4
       
  1653      */
       
  1654     Array getArray (String parameterName) throws SQLException;
       
  1655 
       
  1656     /**
       
  1657      * Retrieves the value of a JDBC <code>DATE</code> parameter as a
       
  1658      * <code>java.sql.Date</code> object, using
       
  1659      * the given <code>Calendar</code> object
       
  1660      * to construct the date.
       
  1661      * With a <code>Calendar</code> object, the driver
       
  1662      * can calculate the date taking into account a custom timezone and locale.
       
  1663      * If no <code>Calendar</code> object is specified, the driver uses the
       
  1664      * default timezone and locale.
       
  1665      *
       
  1666      * @param parameterName the name of the parameter
       
  1667      * @param cal the <code>Calendar</code> object the driver will use
       
  1668      *            to construct the date
       
  1669      * @return the parameter value.  If the value is SQL <code>NULL</code>,
       
  1670      * the result is <code>null</code>.
       
  1671      * @exception SQLException if parameterName does not correspond to a named
       
  1672      * parameter; if a database access error occurs or
       
  1673      * this method is called on a closed <code>CallableStatement</code>
       
  1674      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1675      * this method
       
  1676      * @see #setDate
       
  1677      * @since 1.4
       
  1678      */
       
  1679     java.sql.Date getDate(String parameterName, Calendar cal)
       
  1680         throws SQLException;
       
  1681 
       
  1682     /**
       
  1683      * Retrieves the value of a JDBC <code>TIME</code> parameter as a
       
  1684      * <code>java.sql.Time</code> object, using
       
  1685      * the given <code>Calendar</code> object
       
  1686      * to construct the time.
       
  1687      * With a <code>Calendar</code> object, the driver
       
  1688      * can calculate the time taking into account a custom timezone and locale.
       
  1689      * If no <code>Calendar</code> object is specified, the driver uses the
       
  1690      * default timezone and locale.
       
  1691      *
       
  1692      * @param parameterName the name of the parameter
       
  1693      * @param cal the <code>Calendar</code> object the driver will use
       
  1694      *            to construct the time
       
  1695      * @return the parameter value; if the value is SQL <code>NULL</code>, the result is
       
  1696      * <code>null</code>.
       
  1697      * @exception SQLException if parameterName does not correspond to a named
       
  1698      * parameter; if a database access error occurs or
       
  1699      * this method is called on a closed <code>CallableStatement</code>
       
  1700      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1701      * this method
       
  1702      * @see #setTime
       
  1703      * @since 1.4
       
  1704      */
       
  1705     java.sql.Time getTime(String parameterName, Calendar cal)
       
  1706         throws SQLException;
       
  1707 
       
  1708     /**
       
  1709      * Retrieves the value of a JDBC <code>TIMESTAMP</code> parameter as a
       
  1710      * <code>java.sql.Timestamp</code> object, using
       
  1711      * the given <code>Calendar</code> object to construct
       
  1712      * the <code>Timestamp</code> object.
       
  1713      * With a <code>Calendar</code> object, the driver
       
  1714      * can calculate the timestamp taking into account a custom timezone and locale.
       
  1715      * If no <code>Calendar</code> object is specified, the driver uses the
       
  1716      * default timezone and locale.
       
  1717      *
       
  1718      *
       
  1719      * @param parameterName the name of the parameter
       
  1720      * @param cal the <code>Calendar</code> object the driver will use
       
  1721      *            to construct the timestamp
       
  1722      * @return the parameter value.  If the value is SQL <code>NULL</code>, the result is
       
  1723      * <code>null</code>.
       
  1724      * @exception SQLException if parameterName does not correspond to a named
       
  1725      * parameter; if a database access error occurs or
       
  1726      * this method is called on a closed <code>CallableStatement</code>
       
  1727      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1728      * this method
       
  1729      * @see #setTimestamp
       
  1730      * @since 1.4
       
  1731      */
       
  1732     java.sql.Timestamp getTimestamp(String parameterName, Calendar cal)
       
  1733         throws SQLException;
       
  1734 
       
  1735     /**
       
  1736      * Retrieves the value of a JDBC <code>DATALINK</code> parameter as a
       
  1737      * <code>java.net.URL</code> object.
       
  1738      *
       
  1739      * @param parameterName the name of the parameter
       
  1740      * @return the parameter value as a <code>java.net.URL</code> object in the
       
  1741      * Java programming language.  If the value was SQL <code>NULL</code>, the
       
  1742      * value <code>null</code> is returned.
       
  1743      * @exception SQLException if parameterName does not correspond to a named
       
  1744      * parameter; if a database access error occurs,
       
  1745      * this method is called on a closed <code>CallableStatement</code>,
       
  1746      *            or if there is a problem with the URL
       
  1747      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1748      * this method
       
  1749      * @see #setURL
       
  1750      * @since 1.4
       
  1751      */
       
  1752     java.net.URL getURL(String parameterName) throws SQLException;
       
  1753 
       
  1754     //------------------------- JDBC 4.0 -----------------------------------
       
  1755 
       
  1756     /**
       
  1757      * Retrieves the value of the designated JDBC <code>ROWID</code> parameter as a
       
  1758      * <code>java.sql.RowId</code> object.
       
  1759      *
       
  1760      * @param parameterIndex the first parameter is 1, the second is 2,...
       
  1761      * @return a <code>RowId</code> object that represents the JDBC <code>ROWID</code>
       
  1762      *     value is used as the designated parameter. If the parameter contains
       
  1763      * a SQL <code>NULL</code>, then a <code>null</code> value is returned.
       
  1764      * @throws SQLException if the parameterIndex is not valid;
       
  1765      * if a database access error occurs or
       
  1766      * this method is called on a closed <code>CallableStatement</code>
       
  1767      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1768      * this method
       
  1769      * @since 1.6
       
  1770      */
       
  1771     RowId getRowId(int parameterIndex) throws SQLException;
       
  1772 
       
  1773     /**
       
  1774      * Retrieves the value of the designated JDBC <code>ROWID</code> parameter as a
       
  1775      * <code>java.sql.RowId</code> object.
       
  1776      *
       
  1777      * @param parameterName the name of the parameter
       
  1778      * @return a <code>RowId</code> object that represents the JDBC <code>ROWID</code>
       
  1779      *     value is used as the designated parameter. If the parameter contains
       
  1780      * a SQL <code>NULL</code>, then a <code>null</code> value is returned.
       
  1781      * @throws SQLException if parameterName does not correspond to a named
       
  1782      * parameter; if a database access error occurs or
       
  1783      * this method is called on a closed <code>CallableStatement</code>
       
  1784      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1785      * this method
       
  1786      * @since 1.6
       
  1787      */
       
  1788     RowId getRowId(String parameterName) throws SQLException;
       
  1789 
       
  1790      /**
       
  1791      * Sets the designated parameter to the given <code>java.sql.RowId</code> object. The
       
  1792      * driver converts this to a SQL <code>ROWID</code> when it sends it to the
       
  1793      * database.
       
  1794      *
       
  1795      * @param parameterName the name of the parameter
       
  1796      * @param x the parameter value
       
  1797      * @throws SQLException if parameterName does not correspond to a named
       
  1798      * parameter; if a database access error occurs or
       
  1799      * this method is called on a closed <code>CallableStatement</code>
       
  1800      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1801      * this method
       
  1802      * @since 1.6
       
  1803      */
       
  1804     void setRowId(String parameterName, RowId x) throws SQLException;
       
  1805 
       
  1806     /**
       
  1807      * Sets the designated parameter to the given <code>String</code> object.
       
  1808      * The driver converts this to a SQL <code>NCHAR</code> or
       
  1809      * <code>NVARCHAR</code> or <code>LONGNVARCHAR</code>
       
  1810      * @param parameterName the name of the parameter to be set
       
  1811      * @param value the parameter value
       
  1812      * @throws SQLException if parameterName does not correspond to a named
       
  1813      * parameter; if the driver does not support national
       
  1814      *         character sets;  if the driver can detect that a data conversion
       
  1815      *  error could occur; if a database access error occurs or
       
  1816      * this method is called on a closed <code>CallableStatement</code>
       
  1817      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1818      * this method
       
  1819      * @since 1.6
       
  1820      */
       
  1821     void setNString(String parameterName, String value)
       
  1822             throws SQLException;
       
  1823 
       
  1824     /**
       
  1825      * Sets the designated parameter to a <code>Reader</code> object. The
       
  1826      * <code>Reader</code> reads the data till end-of-file is reached. The
       
  1827      * driver does the necessary conversion from Java character format to
       
  1828      * the national character set in the database.
       
  1829      * @param parameterName the name of the parameter to be set
       
  1830      * @param value the parameter value
       
  1831      * @param length the number of characters in the parameter data.
       
  1832      * @throws SQLException if parameterName does not correspond to a named
       
  1833      * parameter; if the driver does not support national
       
  1834      *         character sets;  if the driver can detect that a data conversion
       
  1835      *  error could occur; if a database access error occurs or
       
  1836      * this method is called on a closed <code>CallableStatement</code>
       
  1837      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1838      * this method
       
  1839      * @since 1.6
       
  1840      */
       
  1841     void setNCharacterStream(String parameterName, Reader value, long length)
       
  1842             throws SQLException;
       
  1843 
       
  1844      /**
       
  1845      * Sets the designated parameter to a <code>java.sql.NClob</code> object. The object
       
  1846      * implements the <code>java.sql.NClob</code> interface. This <code>NClob</code>
       
  1847      * object maps to a SQL <code>NCLOB</code>.
       
  1848      * @param parameterName the name of the parameter to be set
       
  1849      * @param value the parameter value
       
  1850      * @throws SQLException if parameterName does not correspond to a named
       
  1851      * parameter; if the driver does not support national
       
  1852      *         character sets;  if the driver can detect that a data conversion
       
  1853      *  error could occur; if a database access error occurs or
       
  1854      * this method is called on a closed <code>CallableStatement</code>
       
  1855      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1856      * this method
       
  1857      * @since 1.6
       
  1858      */
       
  1859      void setNClob(String parameterName, NClob value) throws SQLException;
       
  1860 
       
  1861     /**
       
  1862      * Sets the designated parameter to a <code>Reader</code> object.  The <code>reader</code> must contain  the number
       
  1863      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  1864      * generated when the <code>CallableStatement</code> is executed.
       
  1865      * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  1866      * because it informs the driver that the parameter value should be sent to
       
  1867      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1868      * driver may have to do extra work to determine whether the parameter
       
  1869      * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  1870      * @param parameterName the name of the parameter to be set
       
  1871      * @param reader An object that contains the data to set the parameter value to.
       
  1872      * @param length the number of characters in the parameter data.
       
  1873      * @throws SQLException if parameterName does not correspond to a named
       
  1874      * parameter; if the length specified is less than zero;
       
  1875      * a database access error occurs or
       
  1876      * this method is called on a closed <code>CallableStatement</code>
       
  1877      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1878      * this method
       
  1879      *
       
  1880      * @since 1.6
       
  1881      */
       
  1882      void setClob(String parameterName, Reader reader, long length)
       
  1883        throws SQLException;
       
  1884 
       
  1885     /**
       
  1886      * Sets the designated parameter to an {@code InputStream} object.
       
  1887      * The <code>Inputstream</code> must contain the number
       
  1888      * of characters specified by length, otherwise a <code>SQLException</code> will be
       
  1889      * generated when the <code>CallableStatement</code> is executed.
       
  1890      * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
       
  1891      * method because it informs the driver that the parameter value should be
       
  1892      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  1893      * the driver may have to do extra work to determine whether the parameter
       
  1894      * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  1895      *
       
  1896      * @param parameterName the name of the parameter to be set
       
  1897      * the second is 2, ...
       
  1898      *
       
  1899      * @param inputStream An object that contains the data to set the parameter
       
  1900      * value to.
       
  1901      * @param length the number of bytes in the parameter data.
       
  1902      * @throws SQLException  if parameterName does not correspond to a named
       
  1903      * parameter; if the length specified
       
  1904      * is less than zero; if the number of bytes in the {@code InputStream}
       
  1905      * does not match the specified length; if a database access error occurs or
       
  1906      * this method is called on a closed <code>CallableStatement</code>
       
  1907      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1908      * this method
       
  1909      *
       
  1910      * @since 1.6
       
  1911      */
       
  1912      void setBlob(String parameterName, InputStream inputStream, long length)
       
  1913         throws SQLException;
       
  1914     /**
       
  1915      * Sets the designated parameter to a <code>Reader</code> object.  The <code>reader</code> must contain  the number
       
  1916      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  1917      * generated when the <code>CallableStatement</code> is executed.
       
  1918      * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  1919      * because it informs the driver that the parameter value should be sent to
       
  1920      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1921      * driver may have to do extra work to determine whether the parameter
       
  1922      * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  1923      *
       
  1924      * @param parameterName the name of the parameter to be set
       
  1925      * @param reader An object that contains the data to set the parameter value to.
       
  1926      * @param length the number of characters in the parameter data.
       
  1927      * @throws SQLException if parameterName does not correspond to a named
       
  1928      * parameter; if the length specified is less than zero;
       
  1929      * if the driver does not support national
       
  1930      *         character sets;  if the driver can detect that a data conversion
       
  1931      *  error could occur; if a database access error occurs or
       
  1932      * this method is called on a closed <code>CallableStatement</code>
       
  1933      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1934      * this method
       
  1935      * @since 1.6
       
  1936      */
       
  1937      void setNClob(String parameterName, Reader reader, long length)
       
  1938        throws SQLException;
       
  1939 
       
  1940     /**
       
  1941      * Retrieves the value of the designated JDBC <code>NCLOB</code> parameter as a
       
  1942      * <code>java.sql.NClob</code> object in the Java programming language.
       
  1943      *
       
  1944      * @param parameterIndex the first parameter is 1, the second is 2, and
       
  1945      * so on
       
  1946      * @return the parameter value as a <code>NClob</code> object in the
       
  1947      * Java programming language.  If the value was SQL <code>NULL</code>, the
       
  1948      * value <code>null</code> is returned.
       
  1949      * @exception SQLException if the parameterIndex is not valid;
       
  1950      * if the driver does not support national
       
  1951      *         character sets;  if the driver can detect that a data conversion
       
  1952      *  error could occur; if a database access error occurs or
       
  1953      * this method is called on a closed <code>CallableStatement</code>
       
  1954      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1955      * this method
       
  1956      * @since 1.6
       
  1957      */
       
  1958     NClob getNClob (int parameterIndex) throws SQLException;
       
  1959 
       
  1960 
       
  1961     /**
       
  1962      * Retrieves the value of a JDBC <code>NCLOB</code> parameter as a
       
  1963      * <code>java.sql.NClob</code> object in the Java programming language.
       
  1964      * @param parameterName the name of the parameter
       
  1965      * @return the parameter value as a <code>NClob</code> object in the
       
  1966      *         Java programming language.  If the value was SQL <code>NULL</code>,
       
  1967      *         the value <code>null</code> is returned.
       
  1968      * @exception SQLException if parameterName does not correspond to a named
       
  1969      * parameter; if the driver does not support national
       
  1970      *         character sets;  if the driver can detect that a data conversion
       
  1971      *  error could occur; if a database access error occurs or
       
  1972      * this method is called on a closed <code>CallableStatement</code>
       
  1973      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1974      * this method
       
  1975      * @since 1.6
       
  1976      */
       
  1977     NClob getNClob (String parameterName) throws SQLException;
       
  1978 
       
  1979     /**
       
  1980      * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. The driver converts this to an
       
  1981      * <code>SQL XML</code> value when it sends it to the database.
       
  1982      *
       
  1983      * @param parameterName the name of the parameter
       
  1984      * @param xmlObject a <code>SQLXML</code> object that maps an <code>SQL XML</code> value
       
  1985      * @throws SQLException if parameterName does not correspond to a named
       
  1986      * parameter; if a database access error occurs;
       
  1987      * this method is called on a closed <code>CallableStatement</code> or
       
  1988      * the <code>java.xml.transform.Result</code>,
       
  1989    *  <code>Writer</code> or <code>OutputStream</code> has not been closed for the <code>SQLXML</code> object
       
  1990      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1991      * this method
       
  1992      *
       
  1993      * @since 1.6
       
  1994      */
       
  1995     void setSQLXML(String parameterName, SQLXML xmlObject) throws SQLException;
       
  1996 
       
  1997     /**
       
  1998      * Retrieves the value of the designated <code>SQL XML</code> parameter as a
       
  1999      * <code>java.sql.SQLXML</code> object in the Java programming language.
       
  2000      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  2001      * @return a <code>SQLXML</code> object that maps an <code>SQL XML</code> value
       
  2002      * @throws SQLException if the parameterIndex is not valid;
       
  2003      * if a database access error occurs or
       
  2004      * this method is called on a closed <code>CallableStatement</code>
       
  2005      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2006      * this method
       
  2007      * @since 1.6
       
  2008      */
       
  2009     SQLXML getSQLXML(int parameterIndex) throws SQLException;
       
  2010 
       
  2011     /**
       
  2012      * Retrieves the value of the designated <code>SQL XML</code> parameter as a
       
  2013      * <code>java.sql.SQLXML</code> object in the Java programming language.
       
  2014      * @param parameterName the name of the parameter
       
  2015      * @return a <code>SQLXML</code> object that maps an <code>SQL XML</code> value
       
  2016      * @throws SQLException if parameterName does not correspond to a named
       
  2017      * parameter; if a database access error occurs or
       
  2018      * this method is called on a closed <code>CallableStatement</code>
       
  2019      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2020      * this method
       
  2021      * @since 1.6
       
  2022      */
       
  2023     SQLXML getSQLXML(String parameterName) throws SQLException;
       
  2024 
       
  2025     /**
       
  2026      * Retrieves the value of the designated <code>NCHAR</code>,
       
  2027      * <code>NVARCHAR</code>
       
  2028      * or <code>LONGNVARCHAR</code> parameter as
       
  2029      * a <code>String</code> in the Java programming language.
       
  2030      * <p>
       
  2031      * For the fixed-length type JDBC <code>NCHAR</code>,
       
  2032      * the <code>String</code> object
       
  2033      * returned has exactly the same value the SQL
       
  2034      * <code>NCHAR</code> value had in the
       
  2035      * database, including any padding added by the database.
       
  2036      *
       
  2037      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  2038      * @return a <code>String</code> object that maps an
       
  2039      * <code>NCHAR</code>, <code>NVARCHAR</code> or <code>LONGNVARCHAR</code> value
       
  2040      * @exception SQLException if the parameterIndex is not valid;
       
  2041      * if a database access error occurs or
       
  2042      * this method is called on a closed <code>CallableStatement</code>
       
  2043      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2044      * this method
       
  2045      * @since 1.6
       
  2046      * @see #setNString
       
  2047      */
       
  2048     String getNString(int parameterIndex) throws SQLException;
       
  2049 
       
  2050 
       
  2051     /**
       
  2052      *  Retrieves the value of the designated <code>NCHAR</code>,
       
  2053      * <code>NVARCHAR</code>
       
  2054      * or <code>LONGNVARCHAR</code> parameter as
       
  2055      * a <code>String</code> in the Java programming language.
       
  2056      * <p>
       
  2057      * For the fixed-length type JDBC <code>NCHAR</code>,
       
  2058      * the <code>String</code> object
       
  2059      * returned has exactly the same value the SQL
       
  2060      * <code>NCHAR</code> value had in the
       
  2061      * database, including any padding added by the database.
       
  2062      *
       
  2063      * @param parameterName the name of the parameter
       
  2064      * @return a <code>String</code> object that maps an
       
  2065      * <code>NCHAR</code>, <code>NVARCHAR</code> or <code>LONGNVARCHAR</code> value
       
  2066      * @exception SQLException if parameterName does not correspond to a named
       
  2067      * parameter;
       
  2068      * if a database access error occurs or
       
  2069      * this method is called on a closed <code>CallableStatement</code>
       
  2070      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2071      * this method
       
  2072      * @since 1.6
       
  2073      * @see #setNString
       
  2074      */
       
  2075     String getNString(String parameterName) throws SQLException;
       
  2076 
       
  2077     /**
       
  2078      * Retrieves the value of the designated parameter as a
       
  2079      * <code>java.io.Reader</code> object in the Java programming language.
       
  2080      * It is intended for use when
       
  2081      * accessing  <code>NCHAR</code>,<code>NVARCHAR</code>
       
  2082      * and <code>LONGNVARCHAR</code> parameters.
       
  2083      *
       
  2084      * @return a <code>java.io.Reader</code> object that contains the parameter
       
  2085      * value; if the value is SQL <code>NULL</code>, the value returned is
       
  2086      * <code>null</code> in the Java programming language.
       
  2087      * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  2088      * @exception SQLException if the parameterIndex is not valid;
       
  2089      * if a database access error occurs or
       
  2090      * this method is called on a closed <code>CallableStatement</code>
       
  2091      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2092      * this method
       
  2093      * @since 1.6
       
  2094      */
       
  2095     java.io.Reader getNCharacterStream(int parameterIndex) throws SQLException;
       
  2096 
       
  2097     /**
       
  2098      * Retrieves the value of the designated parameter as a
       
  2099      * <code>java.io.Reader</code> object in the Java programming language.
       
  2100      * It is intended for use when
       
  2101      * accessing  <code>NCHAR</code>,<code>NVARCHAR</code>
       
  2102      * and <code>LONGNVARCHAR</code> parameters.
       
  2103      *
       
  2104      * @param parameterName the name of the parameter
       
  2105      * @return a <code>java.io.Reader</code> object that contains the parameter
       
  2106      * value; if the value is SQL <code>NULL</code>, the value returned is
       
  2107      * <code>null</code> in the Java programming language
       
  2108      * @exception SQLException if parameterName does not correspond to a named
       
  2109      * parameter; if a database access error occurs or
       
  2110      * this method is called on a closed <code>CallableStatement</code>
       
  2111      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2112      * this method
       
  2113      * @since 1.6
       
  2114      */
       
  2115     java.io.Reader getNCharacterStream(String parameterName) throws SQLException;
       
  2116 
       
  2117     /**
       
  2118      * Retrieves the value of the designated parameter as a
       
  2119      * <code>java.io.Reader</code> object in the Java programming language.
       
  2120      *
       
  2121      * @return a <code>java.io.Reader</code> object that contains the parameter
       
  2122      * value; if the value is SQL <code>NULL</code>, the value returned is
       
  2123      * <code>null</code> in the Java programming language.
       
  2124      * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  2125      * @exception SQLException if the parameterIndex is not valid; if a database access error occurs or
       
  2126      * this method is called on a closed <code>CallableStatement</code>
       
  2127      * @since 1.6
       
  2128      */
       
  2129     java.io.Reader getCharacterStream(int parameterIndex) throws SQLException;
       
  2130 
       
  2131     /**
       
  2132      * Retrieves the value of the designated parameter as a
       
  2133      * <code>java.io.Reader</code> object in the Java programming language.
       
  2134      *
       
  2135      * @param parameterName the name of the parameter
       
  2136      * @return a <code>java.io.Reader</code> object that contains the parameter
       
  2137      * value; if the value is SQL <code>NULL</code>, the value returned is
       
  2138      * <code>null</code> in the Java programming language
       
  2139      * @exception SQLException if parameterName does not correspond to a named
       
  2140      * parameter; if a database access error occurs or
       
  2141      * this method is called on a closed <code>CallableStatement</code>
       
  2142      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2143      * this method
       
  2144      * @since 1.6
       
  2145      */
       
  2146     java.io.Reader getCharacterStream(String parameterName) throws SQLException;
       
  2147 
       
  2148     /**
       
  2149      * Sets the designated parameter to the given <code>java.sql.Blob</code> object.
       
  2150      * The driver converts this to an SQL <code>BLOB</code> value when it
       
  2151      * sends it to the database.
       
  2152      *
       
  2153      * @param parameterName the name of the parameter
       
  2154      * @param x a <code>Blob</code> object that maps an SQL <code>BLOB</code> value
       
  2155      * @exception SQLException if parameterName does not correspond to a named
       
  2156      * parameter; if a database access error occurs or
       
  2157      * this method is called on a closed <code>CallableStatement</code>
       
  2158      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2159      * this method
       
  2160      * @since 1.6
       
  2161      */
       
  2162     void setBlob (String parameterName, Blob x) throws SQLException;
       
  2163 
       
  2164     /**
       
  2165      * Sets the designated parameter to the given <code>java.sql.Clob</code> object.
       
  2166      * The driver converts this to an SQL <code>CLOB</code> value when it
       
  2167      * sends it to the database.
       
  2168      *
       
  2169      * @param parameterName the name of the parameter
       
  2170      * @param x a <code>Clob</code> object that maps an SQL <code>CLOB</code> value
       
  2171      * @exception SQLException if parameterName does not correspond to a named
       
  2172      * parameter; if a database access error occurs or
       
  2173      * this method is called on a closed <code>CallableStatement</code>
       
  2174      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2175      * this method
       
  2176      * @since 1.6
       
  2177      */
       
  2178     void setClob (String parameterName, Clob x) throws SQLException;
       
  2179     /**
       
  2180      * Sets the designated parameter to the given input stream, which will have
       
  2181      * the specified number of bytes.
       
  2182      * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
  2183      * parameter, it may be more practical to send it via a
       
  2184      * <code>java.io.InputStream</code>. Data will be read from the stream
       
  2185      * as needed until end-of-file is reached.  The JDBC driver will
       
  2186      * do any necessary conversion from ASCII to the database char format.
       
  2187      *
       
  2188      * <P><B>Note:</B> This stream object can either be a standard
       
  2189      * Java stream object or your own subclass that implements the
       
  2190      * standard interface.
       
  2191      *
       
  2192      * @param parameterName the name of the parameter
       
  2193      * @param x the Java input stream that contains the ASCII parameter value
       
  2194      * @param length the number of bytes in the stream
       
  2195      * @exception SQLException if parameterName does not correspond to a named
       
  2196      * parameter; if a database access error occurs or
       
  2197      * this method is called on a closed <code>CallableStatement</code>
       
  2198      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2199      * this method
       
  2200      * @since 1.6
       
  2201      */
       
  2202     void setAsciiStream(String parameterName, java.io.InputStream x, long length)
       
  2203         throws SQLException;
       
  2204 
       
  2205     /**
       
  2206      * Sets the designated parameter to the given input stream, which will have
       
  2207      * the specified number of bytes.
       
  2208      * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
  2209      * parameter, it may be more practical to send it via a
       
  2210      * <code>java.io.InputStream</code> object. The data will be read from the stream
       
  2211      * as needed until end-of-file is reached.
       
  2212      *
       
  2213      * <P><B>Note:</B> This stream object can either be a standard
       
  2214      * Java stream object or your own subclass that implements the
       
  2215      * standard interface.
       
  2216      *
       
  2217      * @param parameterName the name of the parameter
       
  2218      * @param x the java input stream which contains the binary parameter value
       
  2219      * @param length the number of bytes in the stream
       
  2220      * @exception SQLException if parameterName does not correspond to a named
       
  2221      * parameter; if a database access error occurs or
       
  2222      * this method is called on a closed <code>CallableStatement</code>
       
  2223      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2224      * this method
       
  2225      * @since 1.6
       
  2226      */
       
  2227     void setBinaryStream(String parameterName, java.io.InputStream x,
       
  2228                          long length) throws SQLException;
       
  2229         /**
       
  2230      * Sets the designated parameter to the given <code>Reader</code>
       
  2231      * object, which is the given number of characters long.
       
  2232      * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
  2233      * parameter, it may be more practical to send it via a
       
  2234      * <code>java.io.Reader</code> object. The data will be read from the stream
       
  2235      * as needed until end-of-file is reached.  The JDBC driver will
       
  2236      * do any necessary conversion from UNICODE to the database char format.
       
  2237      *
       
  2238      * <P><B>Note:</B> This stream object can either be a standard
       
  2239      * Java stream object or your own subclass that implements the
       
  2240      * standard interface.
       
  2241      *
       
  2242      * @param parameterName the name of the parameter
       
  2243      * @param reader the <code>java.io.Reader</code> object that
       
  2244      *        contains the UNICODE data used as the designated parameter
       
  2245      * @param length the number of characters in the stream
       
  2246      * @exception SQLException if parameterName does not correspond to a named
       
  2247      * parameter; if a database access error occurs or
       
  2248      * this method is called on a closed <code>CallableStatement</code>
       
  2249      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2250      * this method
       
  2251      * @since 1.6
       
  2252      */
       
  2253     void setCharacterStream(String parameterName,
       
  2254                             java.io.Reader reader,
       
  2255                             long length) throws SQLException;
       
  2256      //--
       
  2257     /**
       
  2258      * Sets the designated parameter to the given input stream.
       
  2259      * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
  2260      * parameter, it may be more practical to send it via a
       
  2261      * <code>java.io.InputStream</code>. Data will be read from the stream
       
  2262      * as needed until end-of-file is reached.  The JDBC driver will
       
  2263      * do any necessary conversion from ASCII to the database char format.
       
  2264      *
       
  2265      * <P><B>Note:</B> This stream object can either be a standard
       
  2266      * Java stream object or your own subclass that implements the
       
  2267      * standard interface.
       
  2268      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2269      * it might be more efficient to use a version of
       
  2270      * <code>setAsciiStream</code> which takes a length parameter.
       
  2271      *
       
  2272      * @param parameterName the name of the parameter
       
  2273      * @param x the Java input stream that contains the ASCII parameter value
       
  2274      * @exception SQLException if parameterName does not correspond to a named
       
  2275      * parameter; if a database access error occurs or
       
  2276      * this method is called on a closed <code>CallableStatement</code>
       
  2277      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2278        * @since 1.6
       
  2279     */
       
  2280     void setAsciiStream(String parameterName, java.io.InputStream x)
       
  2281             throws SQLException;
       
  2282     /**
       
  2283      * Sets the designated parameter to the given input stream.
       
  2284      * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
  2285      * parameter, it may be more practical to send it via a
       
  2286      * <code>java.io.InputStream</code> object. The data will be read from the
       
  2287      * stream as needed until end-of-file is reached.
       
  2288      *
       
  2289      * <P><B>Note:</B> This stream object can either be a standard
       
  2290      * Java stream object or your own subclass that implements the
       
  2291      * standard interface.
       
  2292      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2293      * it might be more efficient to use a version of
       
  2294      * <code>setBinaryStream</code> which takes a length parameter.
       
  2295      *
       
  2296      * @param parameterName the name of the parameter
       
  2297      * @param x the java input stream which contains the binary parameter value
       
  2298      * @exception SQLException if parameterName does not correspond to a named
       
  2299      * parameter; if a database access error occurs or
       
  2300      * this method is called on a closed <code>CallableStatement</code>
       
  2301      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2302      * @since 1.6
       
  2303      */
       
  2304     void setBinaryStream(String parameterName, java.io.InputStream x)
       
  2305     throws SQLException;
       
  2306     /**
       
  2307      * Sets the designated parameter to the given <code>Reader</code>
       
  2308      * object.
       
  2309      * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
  2310      * parameter, it may be more practical to send it via a
       
  2311      * <code>java.io.Reader</code> object. The data will be read from the stream
       
  2312      * as needed until end-of-file is reached.  The JDBC driver will
       
  2313      * do any necessary conversion from UNICODE to the database char format.
       
  2314      *
       
  2315      * <P><B>Note:</B> This stream object can either be a standard
       
  2316      * Java stream object or your own subclass that implements the
       
  2317      * standard interface.
       
  2318      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2319      * it might be more efficient to use a version of
       
  2320      * <code>setCharacterStream</code> which takes a length parameter.
       
  2321      *
       
  2322      * @param parameterName the name of the parameter
       
  2323      * @param reader the <code>java.io.Reader</code> object that contains the
       
  2324      *        Unicode data
       
  2325      * @exception SQLException if parameterName does not correspond to a named
       
  2326      * parameter; if a database access error occurs or
       
  2327      * this method is called on a closed <code>CallableStatement</code>
       
  2328      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2329      * @since 1.6
       
  2330      */
       
  2331     void setCharacterStream(String parameterName,
       
  2332                           java.io.Reader reader) throws SQLException;
       
  2333   /**
       
  2334      * Sets the designated parameter to a <code>Reader</code> object. The
       
  2335      * <code>Reader</code> reads the data till end-of-file is reached. The
       
  2336      * driver does the necessary conversion from Java character format to
       
  2337      * the national character set in the database.
       
  2338 
       
  2339      * <P><B>Note:</B> This stream object can either be a standard
       
  2340      * Java stream object or your own subclass that implements the
       
  2341      * standard interface.
       
  2342      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2343      * it might be more efficient to use a version of
       
  2344      * <code>setNCharacterStream</code> which takes a length parameter.
       
  2345      *
       
  2346      * @param parameterName the name of the parameter
       
  2347      * @param value the parameter value
       
  2348      * @throws SQLException if parameterName does not correspond to a named
       
  2349      * parameter; if the driver does not support national
       
  2350      *         character sets;  if the driver can detect that a data conversion
       
  2351      *  error could occur; if a database access error occurs; or
       
  2352      * this method is called on a closed <code>CallableStatement</code>
       
  2353      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2354      * @since 1.6
       
  2355      */
       
  2356      void setNCharacterStream(String parameterName, Reader value) throws SQLException;
       
  2357 
       
  2358     /**
       
  2359      * Sets the designated parameter to a <code>Reader</code> object.
       
  2360      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  2361      * because it informs the driver that the parameter value should be sent to
       
  2362      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2363      * driver may have to do extra work to determine whether the parameter
       
  2364      * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  2365      *
       
  2366      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2367      * it might be more efficient to use a version of
       
  2368      * <code>setClob</code> which takes a length parameter.
       
  2369      *
       
  2370      * @param parameterName the name of the parameter
       
  2371      * @param reader An object that contains the data to set the parameter value to.
       
  2372      * @throws SQLException if parameterName does not correspond to a named
       
  2373      * parameter; if a database access error occurs or this method is called on
       
  2374      * a closed <code>CallableStatement</code>
       
  2375      *
       
  2376      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2377      * @since 1.6
       
  2378      */
       
  2379      void setClob(String parameterName, Reader reader)
       
  2380        throws SQLException;
       
  2381 
       
  2382     /**
       
  2383      * Sets the designated parameter to an {@code InputStream} object.
       
  2384      * This method differs from the <code>setBinaryStream (int, InputStream)</code>
       
  2385      * method because it informs the driver that the parameter value should be
       
  2386      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  2387      * the driver may have to do extra work to determine whether the parameter
       
  2388      * data should be send to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  2389      *
       
  2390      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2391      * it might be more efficient to use a version of
       
  2392      * <code>setBlob</code> which takes a length parameter.
       
  2393      *
       
  2394      * @param parameterName the name of the parameter
       
  2395      * @param inputStream An object that contains the data to set the parameter
       
  2396      * value to.
       
  2397      * @throws SQLException if parameterName does not correspond to a named
       
  2398      * parameter; if a database access error occurs or
       
  2399      * this method is called on a closed <code>CallableStatement</code>
       
  2400      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2401      *
       
  2402      * @since 1.6
       
  2403      */
       
  2404      void setBlob(String parameterName, InputStream inputStream)
       
  2405         throws SQLException;
       
  2406     /**
       
  2407      * Sets the designated parameter to a <code>Reader</code> object.
       
  2408      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  2409      * because it informs the driver that the parameter value should be sent to
       
  2410      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2411      * driver may have to do extra work to determine whether the parameter
       
  2412      * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  2413      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2414      * it might be more efficient to use a version of
       
  2415      * <code>setNClob</code> which takes a length parameter.
       
  2416      *
       
  2417      * @param parameterName the name of the parameter
       
  2418      * @param reader An object that contains the data to set the parameter value to.
       
  2419      * @throws SQLException if parameterName does not correspond to a named
       
  2420      * parameter; if the driver does not support national character sets;
       
  2421      * if the driver can detect that a data conversion
       
  2422      *  error could occur;  if a database access error occurs or
       
  2423      * this method is called on a closed <code>CallableStatement</code>
       
  2424      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2425      *
       
  2426      * @since 1.6
       
  2427      */
       
  2428      void setNClob(String parameterName, Reader reader)
       
  2429        throws SQLException;
       
  2430 
       
  2431     //------------------------- JDBC 4.1 -----------------------------------
       
  2432 
       
  2433 
       
  2434     /**
       
  2435      * Returns an object representing the value of OUT parameter
       
  2436      * {@code parameterIndex} and will convert from the
       
  2437      * SQL type of the parameter to the requested Java data type, if the
       
  2438      * conversion is supported. If the conversion is not
       
  2439      * supported or null is specified for the type, a
       
  2440      * <code>SQLException</code> is thrown.
       
  2441      *<p>
       
  2442      * At a minimum, an implementation must support the conversions defined in
       
  2443      * Appendix B, Table B-3 and conversion of appropriate user defined SQL
       
  2444      * types to a Java type which implements {@code SQLData}, or {@code Struct}.
       
  2445      * Additional conversions may be supported and are vendor defined.
       
  2446      *
       
  2447      * @param parameterIndex the first parameter is 1, the second is 2, and so on
       
  2448      * @param type Class representing the Java data type to convert the
       
  2449      * designated parameter to.
       
  2450      * @param <T> the type of the class modeled by this Class object
       
  2451      * @return an instance of {@code type} holding the OUT parameter value
       
  2452      * @throws SQLException if conversion is not supported, type is null or
       
  2453      *         another error occurs. The getCause() method of the
       
  2454      * exception may provide a more detailed exception, for example, if
       
  2455      * a conversion error occurs
       
  2456      * @throws SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2457      * this method
       
  2458      * @since 1.7
       
  2459      */
       
  2460      public <T> T getObject(int parameterIndex, Class<T> type) throws SQLException;
       
  2461 
       
  2462 
       
  2463     /**
       
  2464      * Returns an object representing the value of OUT parameter
       
  2465      * {@code parameterName} and will convert from the
       
  2466      * SQL type of the parameter to the requested Java data type, if the
       
  2467      * conversion is supported. If the conversion is not
       
  2468      * supported  or null is specified for the type, a
       
  2469      * <code>SQLException</code> is thrown.
       
  2470      *<p>
       
  2471      * At a minimum, an implementation must support the conversions defined in
       
  2472      * Appendix B, Table B-3 and conversion of appropriate user defined SQL
       
  2473      * types to a Java type which implements {@code SQLData}, or {@code Struct}.
       
  2474      * Additional conversions may be supported and are vendor defined.
       
  2475      *
       
  2476      * @param parameterName the name of the parameter
       
  2477      * @param type Class representing the Java data type to convert
       
  2478      * the designated parameter to.
       
  2479      * @param <T> the type of the class modeled by this Class object
       
  2480      * @return an instance of {@code type} holding the OUT parameter
       
  2481      * value
       
  2482      * @throws SQLException if conversion is not supported, type is null or
       
  2483      *         another error occurs. The getCause() method of the
       
  2484      * exception may provide a more detailed exception, for example, if
       
  2485      * a conversion error occurs
       
  2486      * @throws SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2487      * this method
       
  2488      * @since 1.7
       
  2489      */
       
  2490      public <T> T getObject(String parameterName, Class<T> type) throws SQLException;
       
  2491 
       
  2492      //------------------------- JDBC 4.2 -----------------------------------
       
  2493 
       
  2494      /**
       
  2495      * Sets the value of the designated parameter with the given object.
       
  2496      *
       
  2497      * If the second argument is an {@code InputStream} then the stream
       
  2498      * must contain the number of bytes specified by scaleOrLength.
       
  2499      * If the second argument is a {@code Reader} then the reader must
       
  2500      * contain the number of characters specified
       
  2501      * by scaleOrLength. If these conditions are not true the driver
       
  2502      * will generate a
       
  2503      * {@code SQLException} when the prepared statement is executed.
       
  2504      *
       
  2505      * <p>The given Java object will be converted to the given targetSqlType
       
  2506      * before being sent to the database.
       
  2507      *
       
  2508      * If the object has a custom mapping (is of a class implementing the
       
  2509      * interface {@code SQLData}),
       
  2510      * the JDBC driver should call the method {@code SQLData.writeSQL} to
       
  2511      * write it to the SQL data stream.
       
  2512      * If, on the other hand, the object is of a class implementing
       
  2513      * {@code Ref}, {@code Blob}, {@code Clob},  {@code NClob},
       
  2514      *  {@code Struct}, {@code java.net.URL},
       
  2515      * or {@code Array}, the driver should pass it to the database as a
       
  2516      * value of the corresponding SQL type.
       
  2517      *
       
  2518      * <p>Note that this method may be used to pass database-specific
       
  2519      * abstract data types.
       
  2520      *<P>
       
  2521      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2522      *
       
  2523      * @param parameterName the name of the parameter
       
  2524      * @param x the object containing the input parameter value
       
  2525      * @param targetSqlType the SQL type to be
       
  2526      * sent to the database. The scale argument may further qualify this type.
       
  2527      * @param scaleOrLength for {@code java.sql.JDBCType.DECIMAL}
       
  2528      *          or {@code java.sql.JDBCType.NUMERIC types},
       
  2529      *          this is the number of digits after the decimal point. For
       
  2530      *          Java Object types {@code InputStream} and {@code Reader},
       
  2531      *          this is the length
       
  2532      *          of the data in the stream or reader.  For all other types,
       
  2533      *          this value will be ignored.
       
  2534      * @exception SQLException if parameterName does not correspond to a named
       
  2535      * parameter; if a database access error occurs
       
  2536      * or this method is called on a closed {@code CallableStatement}  or
       
  2537      *            if the Java Object specified by x is an InputStream
       
  2538      *            or Reader object and the value of the scale parameter is less
       
  2539      *            than zero
       
  2540      * @exception SQLFeatureNotSupportedException if
       
  2541      * the JDBC driver does not support the specified targetSqlType
       
  2542      * @see JDBCType
       
  2543      * @see SQLType
       
  2544      *
       
  2545      * @since 1.8
       
  2546      */
       
  2547      default void setObject(String parameterName, Object x, SQLType targetSqlType,
       
  2548              int scaleOrLength) throws SQLException {
       
  2549         throw new SQLFeatureNotSupportedException("setObject not implemented");
       
  2550     }
       
  2551     /**
       
  2552      * Sets the value of the designated parameter with the given object.
       
  2553      *
       
  2554      * This method is similar to {@link #setObject(String parameterName,
       
  2555      * Object x, SQLType targetSqlType, int scaleOrLength)},
       
  2556      * except that it assumes a scale of zero.
       
  2557      *<P>
       
  2558      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2559      *
       
  2560      * @param parameterName the name of the parameter
       
  2561      * @param x the object containing the input parameter value
       
  2562      * @param targetSqlType the SQL type to be sent to the database
       
  2563      * @exception SQLException if parameterName does not correspond to a named
       
  2564      * parameter; if a database access error occurs
       
  2565      * or this method is called on a closed {@code CallableStatement}
       
  2566      * @exception SQLFeatureNotSupportedException if
       
  2567      * the JDBC driver does not support the specified targetSqlType
       
  2568      * @see JDBCType
       
  2569      * @see SQLType
       
  2570      * @since 1.8
       
  2571      */
       
  2572      default void setObject(String parameterName, Object x, SQLType targetSqlType)
       
  2573         throws SQLException {
       
  2574         throw new SQLFeatureNotSupportedException("setObject not implemented");
       
  2575     }
       
  2576 
       
  2577     /**
       
  2578      * Registers the OUT parameter in ordinal position
       
  2579      * {@code parameterIndex} to the JDBC type
       
  2580      * {@code sqlType}.  All OUT parameters must be registered
       
  2581      * before a stored procedure is executed.
       
  2582      * <p>
       
  2583      * The JDBC type specified by {@code sqlType} for an OUT
       
  2584      * parameter determines the Java type that must be used
       
  2585      * in the {@code get} method to read the value of that parameter.
       
  2586      * <p>
       
  2587      * If the JDBC type expected to be returned to this output parameter
       
  2588      * is specific to this particular database, {@code sqlType}
       
  2589      * may be {@code JDBCType.OTHER} or a {@code SQLType} that is supported by
       
  2590      * the JDBC driver.  The method
       
  2591      * {@link #getObject} retrieves the value.
       
  2592      *<P>
       
  2593      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2594      *
       
  2595      * @param parameterIndex the first parameter is 1, the second is 2,
       
  2596      *        and so on
       
  2597      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2598      * register the OUT Parameter.
       
  2599      *        If the parameter is of JDBC type {@code JDBCType.NUMERIC}
       
  2600      *        or {@code JDBCType.DECIMAL}, the version of
       
  2601      *        {@code registerOutParameter} that accepts a scale value
       
  2602      *        should be used.
       
  2603      *
       
  2604      * @exception SQLException if the parameterIndex is not valid;
       
  2605      * if a database access error occurs or
       
  2606      * this method is called on a closed {@code CallableStatement}
       
  2607      * @exception SQLFeatureNotSupportedException if
       
  2608      * the JDBC driver does not support the specified sqlType
       
  2609      * @see JDBCType
       
  2610      * @see SQLType
       
  2611      * @since 1.8
       
  2612      */
       
  2613     default void registerOutParameter(int parameterIndex, SQLType sqlType)
       
  2614         throws SQLException {
       
  2615         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2616     }
       
  2617 
       
  2618     /**
       
  2619      * Registers the parameter in ordinal position
       
  2620      * {@code parameterIndex} to be of JDBC type
       
  2621      * {@code sqlType}. All OUT parameters must be registered
       
  2622      * before a stored procedure is executed.
       
  2623      * <p>
       
  2624      * The JDBC type specified by {@code sqlType} for an OUT
       
  2625      * parameter determines the Java type that must be used
       
  2626      * in the {@code get} method to read the value of that parameter.
       
  2627      * <p>
       
  2628      * This version of {@code  registerOutParameter} should be
       
  2629      * used when the parameter is of JDBC type {@code JDBCType.NUMERIC}
       
  2630      * or {@code JDBCType.DECIMAL}.
       
  2631      *<P>
       
  2632      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2633      *
       
  2634      * @param parameterIndex the first parameter is 1, the second is 2,
       
  2635      * and so on
       
  2636      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2637      * register the OUT Parameter.
       
  2638      * @param scale the desired number of digits to the right of the
       
  2639      * decimal point.  It must be greater than or equal to zero.
       
  2640      * @exception SQLException if the parameterIndex is not valid;
       
  2641      * if a database access error occurs or
       
  2642      * this method is called on a closed {@code CallableStatement}
       
  2643      * @exception SQLFeatureNotSupportedException if
       
  2644      * the JDBC driver does not support the specified sqlType
       
  2645      * @see JDBCType
       
  2646      * @see SQLType
       
  2647      * @since 1.8
       
  2648      */
       
  2649     default void registerOutParameter(int parameterIndex, SQLType sqlType,
       
  2650             int scale) throws SQLException {
       
  2651         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2652     }
       
  2653     /**
       
  2654      * Registers the designated output parameter.
       
  2655      * This version of
       
  2656      * the method {@code  registerOutParameter}
       
  2657      * should be used for a user-defined or {@code REF} output parameter.
       
  2658      * Examples
       
  2659      * of user-defined types include: {@code STRUCT}, {@code DISTINCT},
       
  2660      * {@code JAVA_OBJECT}, and named array types.
       
  2661      *<p>
       
  2662      * All OUT parameters must be registered
       
  2663      * before a stored procedure is executed.
       
  2664      * <p>  For a user-defined parameter, the fully-qualified SQL
       
  2665      * type name of the parameter should also be given, while a {@code REF}
       
  2666      * parameter requires that the fully-qualified type name of the
       
  2667      * referenced type be given.  A JDBC driver that does not need the
       
  2668      * type code and type name information may ignore it.   To be portable,
       
  2669      * however, applications should always provide these values for
       
  2670      * user-defined and {@code REF} parameters.
       
  2671      *
       
  2672      * Although it is intended for user-defined and {@code REF} parameters,
       
  2673      * this method may be used to register a parameter of any JDBC type.
       
  2674      * If the parameter does not have a user-defined or {@code REF} type, the
       
  2675      * <i>typeName</i> parameter is ignored.
       
  2676      *
       
  2677      * <P><B>Note:</B> When reading the value of an out parameter, you
       
  2678      * must use the getter method whose Java type corresponds to the
       
  2679      * parameter's registered SQL type.
       
  2680      *<P>
       
  2681      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2682      *
       
  2683      * @param parameterIndex the first parameter is 1, the second is 2,...
       
  2684      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2685      * register the OUT Parameter.
       
  2686      * @param typeName the fully-qualified name of an SQL structured type
       
  2687      * @exception SQLException if the parameterIndex is not valid;
       
  2688      * if a database access error occurs or
       
  2689      * this method is called on a closed {@code CallableStatement}
       
  2690      * @exception SQLFeatureNotSupportedException if
       
  2691      * the JDBC driver does not support the specified sqlType
       
  2692      * @see JDBCType
       
  2693      * @see SQLType
       
  2694      * @since 1.8
       
  2695      */
       
  2696     default void registerOutParameter (int parameterIndex, SQLType sqlType,
       
  2697             String typeName) throws SQLException {
       
  2698         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2699     }
       
  2700 
       
  2701     /**
       
  2702      * Registers the OUT parameter named
       
  2703      * <code>parameterName</code> to the JDBC type
       
  2704      * {@code sqlType}.  All OUT parameters must be registered
       
  2705      * before a stored procedure is executed.
       
  2706      * <p>
       
  2707      * The JDBC type specified by {@code sqlType} for an OUT
       
  2708      * parameter determines the Java type that must be used
       
  2709      * in the {@code get} method to read the value of that parameter.
       
  2710      * <p>
       
  2711      * If the JDBC type expected to be returned to this output parameter
       
  2712      * is specific to this particular database, {@code sqlType}
       
  2713      * should be {@code JDBCType.OTHER} or a {@code SQLType} that is supported
       
  2714      * by the JDBC driver..  The method
       
  2715      * {@link #getObject} retrieves the value.
       
  2716      *<P>
       
  2717      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2718      *
       
  2719      * @param parameterName the name of the parameter
       
  2720      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2721      * register the OUT Parameter.
       
  2722      * If the parameter is of JDBC type {@code JDBCType.NUMERIC}
       
  2723      * or {@code JDBCType.DECIMAL}, the version of
       
  2724      * {@code  registerOutParameter} that accepts a scale value
       
  2725      * should be used.
       
  2726      * @exception SQLException if parameterName does not correspond to a named
       
  2727      * parameter; if a database access error occurs or
       
  2728      * this method is called on a closed {@code CallableStatement}
       
  2729      * @exception SQLFeatureNotSupportedException if
       
  2730      * the JDBC driver does not support the specified sqlType
       
  2731      * or if the JDBC driver does not support
       
  2732      * this method
       
  2733      * @since 1.8
       
  2734      * @see JDBCType
       
  2735      * @see SQLType
       
  2736      */
       
  2737     default void registerOutParameter(String parameterName, SQLType sqlType)
       
  2738         throws SQLException {
       
  2739         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2740     }
       
  2741 
       
  2742     /**
       
  2743      * Registers the parameter named
       
  2744      * <code>parameterName</code> to be of JDBC type
       
  2745      * {@code sqlType}.  All OUT parameters must be registered
       
  2746      * before a stored procedure is executed.
       
  2747      * <p>
       
  2748      * The JDBC type specified by {@code sqlType} for an OUT
       
  2749      * parameter determines the Java type that must be used
       
  2750      * in the {@code get} method to read the value of that parameter.
       
  2751      * <p>
       
  2752      * This version of {@code  registerOutParameter} should be
       
  2753      * used when the parameter is of JDBC type {@code JDBCType.NUMERIC}
       
  2754      * or {@code JDBCType.DECIMAL}.
       
  2755      *<P>
       
  2756      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2757      *
       
  2758      * @param parameterName the name of the parameter
       
  2759      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2760      * register the OUT Parameter.
       
  2761      * @param scale the desired number of digits to the right of the
       
  2762      * decimal point.  It must be greater than or equal to zero.
       
  2763      * @exception SQLException if parameterName does not correspond to a named
       
  2764      * parameter; if a database access error occurs or
       
  2765      * this method is called on a closed {@code CallableStatement}
       
  2766      * @exception SQLFeatureNotSupportedException if
       
  2767      * the JDBC driver does not support the specified sqlType
       
  2768      * or if the JDBC driver does not support
       
  2769      * this method
       
  2770      * @since 1.8
       
  2771      * @see JDBCType
       
  2772      * @see SQLType
       
  2773      */
       
  2774     default void registerOutParameter(String parameterName, SQLType sqlType,
       
  2775             int scale) throws SQLException {
       
  2776         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2777     }
       
  2778 
       
  2779     /**
       
  2780      * Registers the designated output parameter.  This version of
       
  2781      * the method {@code  registerOutParameter}
       
  2782      * should be used for a user-named or REF output parameter.  Examples
       
  2783      * of user-named types include: STRUCT, DISTINCT, JAVA_OBJECT, and
       
  2784      * named array types.
       
  2785      *<p>
       
  2786      * All OUT parameters must be registered
       
  2787      * before a stored procedure is executed.
       
  2788      * </p>
       
  2789      * For a user-named parameter the fully-qualified SQL
       
  2790      * type name of the parameter should also be given, while a REF
       
  2791      * parameter requires that the fully-qualified type name of the
       
  2792      * referenced type be given.  A JDBC driver that does not need the
       
  2793      * type code and type name information may ignore it.   To be portable,
       
  2794      * however, applications should always provide these values for
       
  2795      * user-named and REF parameters.
       
  2796      *
       
  2797      * Although it is intended for user-named and REF parameters,
       
  2798      * this method may be used to register a parameter of any JDBC type.
       
  2799      * If the parameter does not have a user-named or REF type, the
       
  2800      * typeName parameter is ignored.
       
  2801      *
       
  2802      * <P><B>Note:</B> When reading the value of an out parameter, you
       
  2803      * must use the {@code getXXX} method whose Java type XXX corresponds to the
       
  2804      * parameter's registered SQL type.
       
  2805      *<P>
       
  2806      * The default implementation will throw {@code SQLFeatureNotSupportedException}
       
  2807      *
       
  2808      * @param parameterName the name of the parameter
       
  2809      * @param sqlType the JDBC type code defined by {@code SQLType} to use to
       
  2810      * register the OUT Parameter.
       
  2811      * @param typeName the fully-qualified name of an SQL structured type
       
  2812      * @exception SQLException if parameterName does not correspond to a named
       
  2813      * parameter; if a database access error occurs or
       
  2814      * this method is called on a closed {@code CallableStatement}
       
  2815      * @exception SQLFeatureNotSupportedException if
       
  2816      * the JDBC driver does not support the specified sqlType
       
  2817      * or if the JDBC driver does not support this method
       
  2818      * @see JDBCType
       
  2819      * @see SQLType
       
  2820      * @since 1.8
       
  2821      */
       
  2822     default void registerOutParameter (String parameterName, SQLType sqlType,
       
  2823             String typeName) throws SQLException {
       
  2824         throw new SQLFeatureNotSupportedException("registerOutParameter not implemented");
       
  2825     }
       
  2826 }