001    /* CallableStatement.java -- A statement for calling stored procedures.
002       Copyright (C) 1999, 2000, 2002, 2006 Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    package java.sql;
039    
040    import java.io.InputStream;
041    import java.io.Reader;
042    import java.math.BigDecimal;
043    import java.net.URL;
044    import java.util.Calendar;
045    import java.util.Map;
046    
047    /**
048     * This interface provides a mechanism for calling stored procedures.
049     *
050     * @author Aaron M. Renn (arenn@urbanophile.com)
051     */
052    public interface CallableStatement extends PreparedStatement
053    {
054      /**
055       * This method registers the specified parameter as an output parameter
056       * of the specified SQL type.
057       *
058       * @param index The index of the parameter to register as output.
059       * @param sqlType The SQL type value from <code>Types</code>.
060       * @exception SQLException If an error occurs.
061       */
062      void registerOutParameter(int index, int sqlType)
063        throws SQLException;
064    
065      /**
066       * This method registers the specified parameter as an output parameter
067       * of the specified SQL type and scale.
068       *
069       * @param index The index of the parameter to register as output.
070       * @param sqlType The SQL type value from <code>Types</code>.
071       * @param scale The scale of the value that will be returned.
072       * @exception SQLException If an error occurs.
073       */
074      void registerOutParameter(int index, int sqlType, int scale)
075        throws SQLException;
076    
077      /**
078       * This method tests whether the value of the last parameter that was fetched
079       * was actually a SQL NULL value.
080       *
081       * @return <code>true</code> if the last parameter fetched was a NULL,
082       *         <code>false</code> otherwise.
083       * @exception SQLException If an error occurs.
084       */
085      boolean wasNull() throws SQLException;
086    
087      /**
088       * This method returns the value of the specified parameter as a Java
089       * <code>String</code>.
090       *
091       * @param index The index of the parameter to return.
092       * @return The parameter value as a <code>String</code>.
093       * @exception SQLException If an error occurs.
094       */
095      String getString(int index) throws SQLException;
096    
097      /**
098       * This method returns the value of the specified parameter as a Java
099       * <code>boolean</code>.
100       *
101       * @param index The index of the parameter to return.
102       * @return The parameter value as a <code>boolean</code>.
103       * @exception SQLException If an error occurs.
104       */
105      boolean getBoolean(int index) throws SQLException;
106    
107      /**
108       * This method returns the value of the specified parameter as a Java
109       * <code>byte</code>.
110       *
111       * @param index The index of the parameter to return.
112       * @return The parameter value as a <code>byte</code>.
113       * @exception SQLException If an error occurs.
114       */
115      byte getByte(int index) throws SQLException;
116    
117      /**
118       * This method returns the value of the specified parameter as a Java
119       * <code>short</code>.
120       *
121       * @param index The index of the parameter to return.
122       * @return The parameter value as a <code>short</code>.
123       * @exception SQLException If an error occurs.
124       */
125      short getShort(int index) throws SQLException;
126    
127      /**
128       * This method returns the value of the specified parameter as a Java
129       * <code>int</code>.
130       *
131       * @param index The index of the parameter to return.
132       * @return The parameter value as a <code>int</code>.
133       * @exception SQLException If an error occurs.
134       */
135      int getInt(int index) throws SQLException;
136    
137      /**
138       * This method returns the value of the specified parameter as a Java
139       * <code>long</code>.
140       *
141       * @param index The index of the parameter to return.
142       * @return The parameter value as a <code>long</code>.
143       * @exception SQLException If an error occurs.
144       */
145      long getLong(int index) throws SQLException;
146    
147      /**
148       * This method returns the value of the specified parameter as a Java
149       * <code>float</code>.
150       *
151       * @param index The index of the parameter to return.
152       * @return The parameter value as a <code>float</code>.
153       * @exception SQLException If an error occurs.
154       */
155      float getFloat(int index) throws SQLException;
156    
157      /**
158       * This method returns the value of the specified parameter as a Java
159       * <code>double</code>.
160       *
161       * @param index The index of the parameter to return.
162       * @return The parameter value as a <code>double</code>.
163       * @exception SQLException If an error occurs.
164       */
165      double getDouble(int index) throws SQLException;
166    
167      /**
168       * This method returns the value of the specified parameter as a Java
169       * <code>BigDecimal</code>.
170       *
171       * @param index The index of the parameter to return.
172       * @param scale The number of digits to the right of the decimal to return.
173       * @return The parameter value as a <code>BigDecimal</code>.
174       * @exception SQLException If an error occurs.
175       * @deprecated Use getBigDecimal(int index)
176       *             or getBigDecimal(String name) instead.
177       */
178      BigDecimal getBigDecimal(int index, int scale)
179        throws SQLException;
180    
181      /**
182       * This method returns the value of the specified parameter as a Java
183       * byte array.
184       *
185       * @param index The index of the parameter to return.
186       * @return The parameter value as a byte array
187       * @exception SQLException If an error occurs.
188       */
189      byte[] getBytes(int index) throws SQLException;
190    
191      /**
192       * This method returns the value of the specified parameter as a Java
193       * <code>java.sql.Date</code>.
194       *
195       * @param index The index of the parameter to return.
196       * @return The parameter value as a <code>java.sql.Date</code>.
197       * @exception SQLException If an error occurs.
198       */
199      Date getDate(int index) throws SQLException;
200    
201      /**
202       * This method returns the value of the specified parameter as a Java
203       * <code>java.sql.Time</code>.
204       *
205       * @param index The index of the parameter to return.
206       * @return The parameter value as a <code>java.sql.Time</code>.
207       * @exception SQLException If an error occurs.
208       */
209      Time getTime(int index) throws SQLException;
210    
211      /**
212       * This method returns the value of the specified parameter as a Java
213       * <code>java.sql.Timestamp</code>.
214       *
215       * @param index The index of the parameter to return.
216       * @return The parameter value as a <code>java.sql.Timestamp</code>.
217       * @exception SQLException If an error occurs.
218       */
219      Timestamp getTimestamp(int index) throws SQLException;
220    
221      /**
222       * This method returns the value of the specified parameter as a Java
223       * <code>Object</code>.
224       *
225       * @param index The index of the parameter to return.
226       * @return The parameter value as an <code>Object</code>.
227       * @exception SQLException If an error occurs.
228       * @since 1.2
229       */
230      Object getObject(int index) throws SQLException;
231    
232      /**
233       * This method returns the value of the specified parameter as a Java
234       * <code>BigDecimal</code>.
235       *
236       * @param index The index of the parameter to return.
237       * @return The parameter value as a <code>BigDecimal</code>.
238       * @exception SQLException If an error occurs.
239       * @since 1.2
240       */
241      BigDecimal getBigDecimal(int index) throws SQLException;
242    
243      /**
244       * This method returns the value of the specified parameter as a Java
245       * <code>Object</code>.
246       *
247       * @param index The index of the parameter to return.
248       * @param map The mapping to use for conversion from SQL to Java types.
249       * @return The parameter value as an <code>Object</code>.
250       * @exception SQLException If an error occurs.
251       * @since 1.2
252       */
253      Object getObject(int index, Map<String, Class<?>> map) throws SQLException;
254    
255      /**
256       * This method returns the value of the specified parameter as a Java
257       * <code>Ref</code>.
258       *
259       * @param index The index of the parameter to return.
260       * @return The parameter value as a <code>Ref</code>.
261       * @exception SQLException If an error occurs.
262       * @since 1.2
263       */
264      Ref getRef(int index) throws SQLException;
265    
266      /**
267       * This method returns the value of the specified parameter as a Java
268       * <code>Blob</code>.
269       *
270       * @param index The index of the parameter to return.
271       * @return The parameter value as a <code>Blob</code>.
272       * @exception SQLException If an error occurs.
273       * @since 1.2
274       */
275      Blob getBlob(int index) throws SQLException;
276    
277      /**
278       * This method returns the value of the specified parameter as a Java
279       * <code>Clob</code>.
280       *
281       * @param index The index of the parameter to return.
282       * @return The parameter value as a <code>Clob</code>.
283       * @exception SQLException If an error occurs.
284       * @since 1.2
285       */
286      Clob getClob(int index) throws SQLException;
287    
288      /**
289       * This method returns the value of the specified parameter as a Java
290       * <code>Array</code>.
291       *
292       * @param index The index of the parameter to return.
293       * @return The parameter value as a <code>Array</code>.
294       * @exception SQLException If an error occurs.
295       * @since 1.2
296       */
297      Array getArray(int index) throws SQLException;
298    
299      /**
300       * This method returns the value of the specified parameter as a Java
301       * <code>java.sql.Date</code>.
302       *
303       * @param index The index of the parameter to return.
304       * @param cal The <code>Calendar</code> to use for timezone and locale.
305       * @return The parameter value as a <code>java.sql.Date</code>.
306       * @exception SQLException If an error occurs.
307       * @since 1.2
308       */
309      Date getDate(int index, Calendar cal) throws SQLException;
310    
311      /**
312       * This method returns the value of the specified parameter as a Java
313       * <code>java.sql.Time</code>.
314       *
315       * @param index The index of the parameter to return.
316       * @param cal The <code>Calendar</code> to use for timezone and locale.
317       * @return The parameter value as a <code>java.sql.Time</code>.
318       * @exception SQLException If an error occurs.
319       * @since 1.2
320       */
321      Time getTime(int index, Calendar cal) throws SQLException;
322    
323      /**
324       * This method returns the value of the specified parameter as a Java
325       * <code>java.sql.Timestamp</code>.
326       *
327       * @param index The index of the parameter to return.
328       * @return The parameter value as a <code>java.sql.Timestamp</code>.
329       * @exception SQLException If an error occurs.
330       * @since 1.2
331       */
332      Timestamp getTimestamp(int index, Calendar cal)
333        throws SQLException;
334    
335      /**
336       * This method registers the specified parameter as an output parameter
337       * of the specified SQL type.
338       *
339       * @param index The index of the parameter to register as output.
340       * @param sqlType The SQL type value from <code>Types</code>.
341       * @param typeName The user defined data type name.
342       * @exception SQLException If an error occurs.
343       * @since 1.2
344       */
345      void registerOutParameter(int index, int sqlType, String typeName)
346        throws SQLException;
347    
348      /**
349       * This method registers the specified parameter as an output parameter
350       * of the specified SQL type.
351       *
352       * @param name The name of the parameter to register as output.
353       * @param sqlType The SQL type value from <code>Types</code>.
354       * @exception SQLException If an error occurs.
355       * @since 1.4
356       */
357      void registerOutParameter(String name, int sqlType)
358        throws SQLException;
359    
360      /**
361       * This method registers the specified parameter as an output parameter
362       * of the specified SQL type.  This version of registerOutParameter is used
363       * for NUMERIC or DECIMAL types.
364       *
365       * @param name The name of the parameter to register as output.
366       * @param sqlType The SQL type value from <code>Types</code>.
367       * @param scale Number of digits to the right of the decimal point.
368       * @exception SQLException If an error occurs.
369       * @since 1.4
370       */
371      void registerOutParameter(String name, int sqlType, int scale)
372        throws SQLException;
373    
374    
375      /**
376       * This method registers the specified parameter as an output parameter
377       * of the specified SQL type.  This version of registerOutParameter is used
378       * for user-named or REF types. If the type of the output parameter does
379       * not have such a type, the typeName argument is ignored.
380       *
381       * @param name The name of the parameter to register as output.
382       * @param sqlType The SQL type value from <code>Types</code>.
383       * @param typeName The SQL structured type name.
384       * @exception SQLException If an error occurs.
385       * @since 1.4
386       */
387      void registerOutParameter(String name, int sqlType, String typeName)
388        throws SQLException;
389    
390      /**
391       * This method returns the value of the specified parameter as a Java
392       * <code>java.net.URL</code>.
393       *
394       * @param index The index of the parameter to return.
395       * @return The parameter value as a <code>URL</code>.
396       * @exception SQLException If an error occurs.
397       * @since 1.4
398       */
399      URL getURL(int index) throws SQLException;
400    
401      /**
402       * This method sets the value of the specified parameter to the specified
403       * <code>java.net.URL</code>
404       *
405       * @param name The name of the parameter to set.
406       * @param value The value the parameter.
407       * @since 1.4
408       */
409      void setURL(String name, URL value) throws SQLException;
410    
411      /**
412       * This method populates the specified parameter with a SQL NULL value
413       * for the specified type.
414       *
415       * @param name The name of the parameter to set.
416       * @param sqlType The SQL type identifier of the parameter from
417       *                <code>Types</code>
418       * @exception SQLException If an error occurs.
419       * @since 1.4
420       */
421      void setNull(String name, int sqlType) throws SQLException;
422    
423      /**
424       * This method sets the specified parameter from the given Java
425       * <code>boolean</code> value.
426       *
427       * @param name The name of the parameter value to set.
428       * @param value The value of the parameter.
429       * @exception SQLException If an error occurs.
430       * @since 1.4
431       */
432      void setBoolean(String name, boolean value) throws SQLException;
433    
434      /**
435       * This method sets the specified parameter from the given Java
436       * <code>byte</code> value.
437       *
438       * @param name The name of the parameter value to set.
439       * @param value The value of the parameter.
440       * @exception SQLException If an error occurs.
441       * @since 1.4
442       */
443      void setByte(String name, byte value) throws SQLException;
444    
445      /**
446       * This method sets the specified parameter from the given Java
447       * <code>short</code> value.
448       *
449       * @param name The name of the parameter value to set.
450       * @param value The value of the parameter.
451       * @exception SQLException If an error occurs.
452       * @since 1.4
453       */
454      void setShort(String name, short value) throws SQLException;
455    
456      /**
457       * This method sets the specified parameter from the given Java
458       * <code>int</code> value.
459       *
460       * @param name The name of the parameter value to set.
461       * @param value The value of the parameter.
462       * @exception SQLException If an error occurs.
463       * @since 1.4
464       */
465      void setInt(String name, int value) throws SQLException;
466    
467      /**
468       * This method sets the specified parameter from the given Java
469       * <code>long</code> value.
470       *
471       * @param name The name of the parameter value to set.
472       * @param value The value of the parameter.
473       * @exception SQLException If an error occurs.
474       * @since 1.4
475       */
476      void setLong(String name, long value) throws SQLException;
477    
478      /**
479       * This method sets the specified parameter from the given Java
480       * <code>float</code> value.
481       *
482       * @param name The name of the parameter value to set.
483       * @param value The value of the parameter.
484       * @exception SQLException If an error occurs.
485       * @since 1.4
486       */
487      void setFloat(String name, float value) throws SQLException;
488    
489      /**
490       * This method sets the specified parameter from the given Java
491       * <code>double</code> value.
492       *
493       * @param name The name of the parameter value to set.
494       * @param value The value of the parameter.
495       * @exception SQLException If an error occurs.
496       * @since 1.4
497       */
498      void setDouble(String name, double value) throws SQLException;
499    
500      /**
501       * This method sets the specified parameter from the given Java
502       * <code>BigDecimal</code> value.
503       *
504       * @param name The name of the parameter value to set.
505       * @param value The value of the parameter.
506       * @exception SQLException If an error occurs.
507       * @since 1.4
508       */
509      void setBigDecimal(String name, BigDecimal value)
510        throws SQLException;
511    
512      /**
513       * This method sets the specified parameter from the given Java
514       * <code>String</code> value.
515       *
516       * @param name The name of the parameter value to set.
517       * @param value The value of the parameter.
518       * @exception SQLException If an error occurs.
519       * @since 1.4
520       */
521      void setString(String name, String value) throws SQLException;
522    
523      /**
524       * This method sets the specified parameter from the given Java
525       * <code>byte</code> array value.
526       *
527       * @param name The name of the parameter value to set.
528       * @param value The value of the parameter.
529       * @exception SQLException If an error occurs.
530       * @since 1.4
531       */
532      void setBytes(String name, byte[] value) throws SQLException;
533    
534      /**
535       * This method sets the specified parameter from the given Java
536       * <code>java.sql.Date</code> value.
537       *
538       * @param name The name of the parameter value to set.
539       * @param value The value of the parameter.
540       * @exception SQLException If an error occurs.
541       * @since 1.4
542       */
543      void setDate(String name, Date value) throws SQLException;
544    
545      /**
546       * This method sets the specified parameter from the given Java
547       * <code>java.sql.Time</code> value.
548       *
549       * @param name The name of the parameter value to set.
550       * @param value The value of the parameter.
551       * @exception SQLException If an error occurs.
552       * @since 1.4
553       */
554      void setTime(String name, Time value) throws SQLException;
555    
556      /**
557       * This method sets the specified parameter from the given Java
558       * <code>java.sql.Timestamp</code> value.
559       *
560       * @param name The name of the parameter value to set.
561       * @param value The value of the parameter.
562       * @exception SQLException If an error occurs.
563       * @since 1.4
564       */
565      void setTimestamp(String name, Timestamp value)
566        throws SQLException;
567    
568      /**
569       * This method sets the specified parameter from the given Java
570       * ASCII <code>InputStream</code> value.
571       *
572       * @param name The name of the parameter value to set.
573       * @param stream The stream from which the parameter value is read.
574       * @param count The number of bytes in the stream.
575       * @exception SQLException If an error occurs.
576       * @since 1.4
577       */
578      void setAsciiStream(String name, InputStream stream, int count)
579          throws SQLException;
580    
581      /**
582       * This method sets the specified parameter from the given Java
583       * binary <code>InputStream</code> value.
584       *
585       * @param name The name of the parameter value to set.
586       * @param stream The stream from which the parameter value is read.
587       * @param count The number of bytes in the stream.
588       * @exception SQLException If an error occurs.
589       * @since 1.4
590       */
591      void setBinaryStream(String name, InputStream stream, int count)
592          throws SQLException;
593    
594      /**
595       * This method sets the specified parameter from the given Java
596       * <code>Object</code> value.  The specified SQL object type will be used.
597       *
598       * @param name The name of the parameter value to set.
599       * @param value The value of the parameter.
600       * @param sqlType The SQL type to use for the parameter, from
601       *                <code>Types</code>
602       * @param scale The scale of the value, for numeric values only.
603       * @exception SQLException If an error occurs.
604       * @see Types
605       * @since 1.4
606       */
607      void setObject(String name, Object value, int sqlType, int scale)
608        throws SQLException;
609    
610      /**
611       * This method sets the specified parameter from the given Java
612       * <code>Object</code> value.  The specified SQL object type will be used.
613       *
614       * @param name The name of the parameter value to set.
615       * @param value The value of the parameter.
616       * @param sqlType The SQL type to use for the parameter, from
617       *                <code>Types</code>
618       * @exception SQLException If an error occurs.
619       * @see Types
620       * @since 1.4
621       */
622      void setObject(String name, Object value, int sqlType)
623        throws SQLException;
624    
625      /**
626       * This method sets the specified parameter from the given Java
627       * <code>Object</code> value.  The default object type to SQL type mapping
628       * will be used.
629       *
630       * @param name The name of the parameter value to set.
631       * @param value The value of the parameter.
632       * @exception SQLException If an error occurs.
633       * @since 1.4
634       */
635      void setObject(String name, Object value) throws SQLException;
636    
637      /**
638       * This method sets the specified parameter from the given Java
639       * character <code>Reader</code> value.
640       *
641       * @param name The name of the parameter value to set.
642       * @param reader The reader from which the parameter value is read.
643       * @param count The number of characters in the stream.
644       * @exception SQLException If an error occurs.
645       * @since 1.4
646       */
647      void setCharacterStream(String name, Reader reader, int count)
648        throws SQLException;
649    
650      /**
651       * This method sets the specified parameter from the given Java
652       * <code>java.sql.Date</code> value.
653       *
654       * @param name The name of the parameter value to set.
655       * @param value The value of the parameter.
656       * @param cal The <code>Calendar</code> to use for timezone and locale.
657       * @exception SQLException If an error occurs.
658       * @since 1.4
659       */
660      void setDate(String name, Date value, Calendar cal)
661        throws SQLException;
662    
663      /**
664       * This method sets the specified parameter from the given Java
665       * <code>java.sql.Time</code> value.
666       *
667       * @param name The name of the parameter value to set.
668       * @param value The value of the parameter.
669       * @param cal The <code>Calendar</code> to use for timezone and locale.
670       * @exception SQLException If an error occurs.
671       * @since 1.4
672       */
673      void setTime(String name, Time value, Calendar cal)
674        throws SQLException;
675    
676      /**
677       * This method sets the specified parameter from the given Java
678       * <code>java.sql.Timestamp</code> value.
679       *
680       * @param name The name of the parameter value to set.
681       * @param value The value of the parameter.
682       * @param cal The <code>Calendar</code> to use for timezone and locale.
683       * @exception SQLException If an error occurs.
684       * @since 1.4
685       */
686      void setTimestamp(String name, Timestamp value, Calendar cal)
687        throws SQLException;
688    
689      /**
690       * This method populates the specified parameter with a SQL NULL value
691       * for the specified type.
692       *
693       * @param name The name of the parameter to set.
694       * @param sqlType The SQL type identifier of the parameter from
695       *                <code>Types</code>
696       * @param typeName The name of the data type, for user defined types.
697       * @exception SQLException If an error occurs.
698       * @since 1.4
699       */
700      void setNull(String name, int sqlType, String typeName)
701        throws SQLException;
702    
703      /**
704       * This method returns the value of the specified parameter as a Java
705       * <code>String</code>.
706       *
707       * @param name The name of the parameter to return.
708       * @return The parameter value as a <code>String</code>.
709       * @exception SQLException If an error occurs.
710       * @since 1.4
711       */
712      String getString(String name) throws SQLException;
713    
714      /**
715       * This method returns the value of the specified parameter as a Java
716       * <code>boolean</code>.
717       *
718       * @param name The name of the parameter to return.
719       * @return The parameter value as a <code>boolean</code>.
720       * @exception SQLException If an error occurs.
721       * @since 1.4
722       */
723      boolean getBoolean(String name) throws SQLException;
724    
725      /**
726       * This method returns the value of the specified parameter as a Java
727       * <code>byte</code>.
728       *
729       * @param name The name of the parameter to return.
730       * @return The parameter value as a <code>byte</code>.
731       * @exception SQLException If an error occurs.
732       * @since 1.4
733       */
734      byte getByte(String name) throws SQLException;
735    
736      /**
737       * This method returns the value of the specified parameter as a Java
738       * <code>short</code>.
739       *
740       * @param name The name of the parameter to return.
741       * @return The parameter value as a <code>short</code>.
742       * @exception SQLException If an error occurs.
743       * @since 1.4
744       */
745      short getShort(String name) throws SQLException;
746    
747      /**
748       * This method returns the value of the specified parameter as a Java
749       * <code>int</code>.
750       *
751       * @param name The name of the parameter to return.
752       * @return The parameter value as a <code>int</code>.
753       * @exception SQLException If an error occurs.
754       * @since 1.4
755       */
756      int getInt(String name) throws SQLException;
757    
758      /**
759       * This method returns the value of the specified parameter as a Java
760       * <code>long</code>.
761       *
762       * @param name The name of the parameter to return.
763       * @return The parameter value as a <code>long</code>.
764       * @exception SQLException If an error occurs.
765       * @since 1.4
766       */
767      long getLong(String name) throws SQLException;
768    
769      /**
770       * This method returns the value of the specified parameter as a Java
771       * <code>float</code>.
772       *
773       * @param name The name of the parameter to return.
774       * @return The parameter value as a <code>float</code>.
775       * @exception SQLException If an error occurs.
776       * @since 1.4
777       */
778      float getFloat(String name) throws SQLException;
779    
780      /**
781       * This method returns the value of the specified parameter as a Java
782       * <code>double</code>.
783       *
784       * @param name The name of the parameter to return.
785       * @return The parameter value as a <code>double</code>.
786       * @exception SQLException If an error occurs.
787       * @since 1.4
788       */
789      double getDouble(String name) throws SQLException;
790    
791      /**
792       * This method returns the value of the specified parameter as a Java
793       * <code>byte</code> array.
794       *
795       * @param name The name of the parameter to return.
796       * @return The parameter value as a <code>byte[]</code>.
797       * @exception SQLException If an error occurs.
798       * @since 1.4
799       */
800      byte[] getBytes(String name) throws SQLException;
801    
802      /**
803       * This method returns the value of the specified parameter as a Java
804       * <code>java.sql.Date</code>.
805       *
806       * @param name The name of the parameter to return.
807       * @return The parameter value as a <code>java.sql.Date</code>.
808       * @exception SQLException If an error occurs.
809       * @since 1.4
810       */
811      Date getDate(String name) throws SQLException;
812    
813      /**
814       * This method returns the value of the specified parameter as a Java
815       * <code>java.sql.Time</code>.
816       *
817       * @param name The name of the parameter to return.
818       * @return The parameter value as a <code>java.sql.Time</code>.
819       * @exception SQLException If an error occurs.
820       * @since 1.4
821       */
822      Time getTime(String name) throws SQLException;
823    
824      /**
825       * This method returns the value of the specified parameter as a Java
826       * <code>java.sql.Timestamp</code>.
827       *
828       * @param name The name of the parameter to return.
829       * @return The parameter value as a <code>java.sql.Timestamp</code>.
830       * @exception SQLException If an error occurs.
831       * @since 1.4
832       */
833      Timestamp getTimestamp(String name) throws SQLException;
834    
835      /**
836       * This method returns the value of the specified parameter as a Java
837       * <code>Object</code>.
838       *
839       * @param name The name of the parameter to return.
840       * @return The parameter value as a <code>Object</code>.
841       * @exception SQLException If an error occurs.
842       * @since 1.4
843       */
844      Object getObject(String name) throws SQLException;
845    
846      /**
847       * This method returns the value of the specified parameter as a Java
848       * <code>BigDecimal</code>.
849       *
850       * @param name The name of the parameter to return.
851       * @return The parameter value as a <code>BigDecimal</code>.
852       * @exception SQLException If an error occurs.
853       * @since 1.4
854       */
855      BigDecimal getBigDecimal(String name) throws SQLException;
856    
857      /**
858       * This method returns the value of the specified parameter as a Java
859       * <code>Object</code> using the specified mapping for conversion from
860       * SQL to Java types.
861       *
862       * @param name The name of the parameter to return.
863       * @param map The mapping to use for conversion from SQL to Java types.
864       * @return The parameter value as an <code>Object</code>.
865       * @exception SQLException If an error occurs.
866       * @since 1.4
867       */
868      Object getObject(String name, Map<String, Class<?>> map) throws SQLException;
869    
870      /**
871       * This method returns the value of the specified parameter as a Java
872       * <code>Ref</code>.
873       *
874       * @param name The name of the parameter to return.
875       * @return The parameter value as a <code>Ref</code>.
876       * @exception SQLException If an error occurs.
877       * @since 1.4
878       */
879      Ref getRef(String name) throws SQLException;
880    
881      /**
882       * This method returns the value of the specified parameter as a Java
883       * <code>Blob</code>.
884       *
885       * @param name The name of the parameter to return.
886       * @return The parameter value as a <code>Blob</code>.
887       * @exception SQLException If an error occurs.
888       * @since 1.4
889       */
890      Blob getBlob(String name) throws SQLException;
891    
892      /**
893       * This method returns the value of the specified parameter as a Java
894       * <code>Clob</code>.
895       *
896       * @param name The name of the parameter to return.
897       * @return The parameter value as a <code>Clob</code>.
898       * @exception SQLException If an error occurs.
899       * @since 1.4
900       */
901      Clob getClob(String name) throws SQLException;
902    
903      /**
904       * This method returns the value of the specified parameter as a Java
905       * <code>Array</code>.
906       *
907       * @param name The name of the parameter to return.
908       * @return The parameter value as a <code>Array</code>.
909       * @exception SQLException If an error occurs.
910       * @since 1.4
911       */
912      Array getArray(String name) throws SQLException;
913    
914      /**
915       * This method returns the value of the specified parameter as a Java
916       * <code>java.sql.Date</code>.
917       *
918       * @param name The name of the parameter to return.
919       * @param cal The <code>Calendar</code> to use for timezone and locale.
920       * @return The parameter value as a <code>java.sql.Date</code>.
921       * @exception SQLException If an error occurs.
922       * @since 1.4
923       */
924      Date getDate(String name, Calendar cal) throws SQLException;
925    
926      /**
927       * This method returns the value of the specified parameter as a Java
928       * <code>java.sql.Time</code>.
929       *
930       * @param name The name of the parameter to return.
931       * @param cal The <code>Calendar</code> to use for timezone and locale.
932       * @return The parameter value as a <code>java.sql.Time</code>.
933       * @exception SQLException If an error occurs.
934       * @since 1.4
935       */
936      Time getTime(String name, Calendar cal) throws SQLException;
937    
938      /**
939       * This method returns the value of the specified parameter as a Java
940       * <code>java.sql.Timestamp</code>.
941       *
942       * @param name The name of the parameter to return.
943       * @param cal The <code>Calendar</code> to use for timezone and locale.
944       * @return The parameter value as a <code>java.sql.Timestamp</code>.
945       * @exception SQLException If an error occurs.
946       * @since 1.4
947       */
948      Timestamp getTimestamp(String name, Calendar cal)
949        throws SQLException;
950    
951      /**
952       * This method returns the value of the specified parameter as a Java
953       * <code>java.net.URL</code>.
954       *
955       * @param name The name of the parameter to return.
956       * @return The parameter value as a <code>java.net.URL</code>.
957       * @exception SQLException If an error occurs.
958       * @since 1.4
959       */
960      URL getURL(String name) throws SQLException;
961    }