001/* CallableStatement.java -- A statement for calling stored procedures.
002   Copyright (C) 1999, 2000, 2002, 2006 Free Software Foundation, Inc.
003
004This file is part of GNU Classpath.
005
006GNU Classpath is free software; you can redistribute it and/or modify
007it under the terms of the GNU General Public License as published by
008the Free Software Foundation; either version 2, or (at your option)
009any later version.
010 
011GNU Classpath is distributed in the hope that it will be useful, but
012WITHOUT ANY WARRANTY; without even the implied warranty of
013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014General Public License for more details.
015
016You should have received a copy of the GNU General Public License
017along with GNU Classpath; see the file COPYING.  If not, write to the
018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
01902110-1301 USA.
020
021Linking this library statically or dynamically with other modules is
022making a combined work based on this library.  Thus, the terms and
023conditions of the GNU General Public License cover the whole
024combination.
025
026As a special exception, the copyright holders of this library give you
027permission to link this library with independent modules to produce an
028executable, regardless of the license terms of these independent
029modules, and to copy and distribute the resulting executable under
030terms of your choice, provided that you also meet, for each linked
031independent module, the terms and conditions of the license of that
032module.  An independent module is a module which is not derived from
033or based on this library.  If you modify this library, you may extend
034this exception to your version of the library, but you are not
035obligated to do so.  If you do not wish to do so, delete this
036exception statement from your version. */
037
038package java.sql;
039
040import java.io.InputStream;
041import java.io.Reader;
042import java.math.BigDecimal;
043import java.net.URL;
044import java.util.Calendar;
045import 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 */
052public 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}