---
title: "java.sql.CallableStatement - JDBC 驱动程序  V2.4.13 | OceanBase 文档中心"
description: java.sql.CallableStatement java.sql.CallableStatement 是存储过程执行接口。 描述 JDBC API 提供了存储过程的 SQL 转义语法，允许以标准方式为所有 RDBMS 调用存储过程。转义语法的形式一种包含结果参数，另一种不包含结果参数。如果被使用，结果参数必须注…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*bhcER5Qvet8AAAAAAAAAAAAADiGDAQ/original) JDBC 驱动程序 V 2.4.13

# java.sql.CallableStatement

更新时间：2026-07-22 17:45:59

[编辑](https://github.com/oceanbase/connector-j-doc/edit/V2.4.13/zh-CN/400.reference-information/300.common-interfaces/300.java-sql-callablestatement.md)  

`java.sql.CallableStatement` 是存储过程执行接口。

## 描述

JDBC API 提供了存储过程的 SQL 转义语法，允许以标准方式为所有 RDBMS 调用存储过程。转义语法的形式一种包含结果参数，另一种不包含结果参数。如果被使用，结果参数必须注册为 `OUT` 参数。其他参数可用于输入、输出或同时为输入输出。参数是根据编号的顺序引用的，第一个参数的编号是 1。

```java
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}  
{call <procedure-name>[(<arg1>,<arg2>, ...)]}

```

`IN` 参数值通过从 PreparedStatement 继承的 `set` 方法设置的。所有 `OUT` 参数的类型必须在执行存储过程之前注册；执行后通过此类提供的 `get` 方法检索它们的值。

CallableStatement 可以返回一个 ResultSet 对象或多个 ResultSet 对象。使用从 Statement 继承的方法可以处理多个 ResultSet 对象。

为了获得最大的可移植性，应在获取输出参数值之前处理完调用的 ResultSet 对象和更新计数。

## 方法

| 方法名 | 返回值类型 | **Oracle 模式** 是否支持 | **MySQL 模式** 是否支持 |
| --- | --- | --- | --- |
| registerOutParameter(int parameterIndex, int sqlType ) | void | 是 | 是 |
| registerOutParameter(int parameterIndex, int sqlType, int scale) | void | 是 | 是 |
| wasNull() | Boolean | 是 | 是 |
| getString(int parameterIndex) | String | 是 | 是 |
| getString(String parameterName) | String | 是 | 是 |
| getBoolean(int parameterIndex) | Boolean | 是 | 是 |
| getBoolean(String parameterName) | Boolean | 是 | 是 |
| getByte(int parameterName) | byte | 是 | 是 |
| getByte(String parameterName) | byte | 是 | 是 |
| getShort(int parameterIndex) | short | 是 | 是 |
| getShort(String parameterName) | short | 是 | 是 |
| getInt(int parameterIndex) | int | 是 | 是 |
| getInt(String parameterName) | int | 是 | 是 |
| getLong(int parameterIndex) | long | 是 | 是 |
| getLong(String parameterName) | long | 是 | 是 |
| getFloat(int parameterIndex) | float | 是 | 是 |
| getFloat(String parameterName) | float | 是 | 是 |
| getDouble(int parameterIndex) | double | 是 | 是 |
| getDouble(String parameterName) | double | 是 | 是 |
| getBigDecimal(int parameterIndex) | BigDecimal | 是 | 是 |
| getBigDecimal(String parameterName) | BigDecimal | 是 | 是 |
| getBytes(int parameterIndex) | byte[] | 是 | 是 |
| getBytes(String parameterName) | byte[] | 是 | 是 |
| getDate(int parameterIndex) | Date | 是 | 是 |
| getDate(String parameterName) | Date | 是 | 是 |
| getTime(int parameterIndex) | Time | 是 | 是 |
| getTime(String parameterName) | Time | 是 | 是 |
| getTimestamp(int parameterIndex) | Timestamp | 是 | 是 |
| getTimestamp(String parameterName) | Timestamp | 是 | 是 |
| getObject(int parameterIndex) | Object | 是 | 是 |
| getObject(String parameterName) | Object | 是 | 是 |
| getRef(int parameterIndex) | Ref | 是 | 是 |
| getRef(String parameterName) | Ref | 是 | 是 |
| getBlob(int parameterIndex) | Blob | 是 | 是 |
| getBlob(String parameterName) | Blob | 是 | 是 |
| getClob(int parameterIndex) | Clob | 是 | 是 |
| getClob(String parameterName) | Clob | 是 | 是 |
| getArray(int parameterIndex) | Array | 是 | 是 |
| getArray(String parameterName) | Array | 是 | 是 |
| getRowId(int parameterIndex) | RowId | 否 | 否 |
| getRowId(String parameterName) | RowId | 否 | 否 |
| setRowId(String parameterName,RowId x) | void | 否 | 否 |
| setNString(String parameterName,String value) | void | 是 | 是 |
| setNString(int parameterIndex) | void | 是 | 是 |
| setNCharacterStream(String parameterName,Reader reader, longlength) | void | 是 | 是 |
| setNCharacterStream(String parameterName,Reader value) | void | 是 | 是 |
| setNClob(String parameterName,NClob value) | void | 是 | 是 |
| setNClob(String parameterName,Reader reader, longlength) | void | 是 | 是 |
| setNClob(String parameterName,Reader reader) | void | 是 | 是 |
| setClob(String parameterName,Reader reader, longlength) | void | 是 | 是 |
| setClob(String parameterName,Reader reader, longlength) | void | 是 | 是 |
| setClob(String parameterName,Clob x) | void | 是 | 是 |
| setBlob(String parameterName,InputStream inputStream, long length) | void | 是 | 是 |
| setBlob(String parameterName,Blob x) | void | 是 | 是 |
| setBlob(String parameterName,InputStream inputStream) | void | 是 | 是 |
| getNClob(int parameterIndex) | NClob | 是 | 是 |
| getNClob(String parameterName) | NClob | 是 | 是 |
| setSQLXML(String parameterName,SQLXML xmlObject) | void | 是 | 是 |
| getSQLXML(int parameterIndex) | SQLXML | 否 | 否 |
| getSQLXML(String parameterName) | SQLXML | 否 | 否 |
| getURL(int parameterIndex) | URL | 是 | 是 |
| getURL(String parameterName) | URL | 是 | 是 |
| getNString(int parameterIndex) | String | 是 | 是 |
| getNString(String parameterName) | String | 是 | 是 |
| getCharacterStream(int parameterIndex) | Reader | 是 | 是 |
| getCharacterStream(String parameterName) | Reader | 是 | 是 |
| getNCharacterStream(int parameterIndex) | Reader | 是 | 是 |
| getNCharacterStream(String parameterName) | Reader | 是 | 是 |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
