JDBC 存储过程OUT参数
2018-03-21 14:18 更新
JDBC教程 - JDBC存储过程OUT参数
以下部分显示如何使用IN和OUT调用存储过程参数。
以PL/SQL语言编写的Oracle数据库存储过程如下所示。
过程中有四个参数,最后三个是OUT参数,这意味着数据将从这些参数中传出。
CREATE OR REPLACE PROCEDURE getPERSONByUserId(
p_userid IN PERSON.USER_ID%TYPE,
o_username OUT PERSON.USERNAME%TYPE,
o_createdby OUT PERSON.CREATED_BY%TYPE,
o_date OUT PERSON.CREATED_DATE%TYPE)
IS
BEGIN
SELECT USERNAME , CREATED_BY, CREATED_DATE
INTO o_username, o_createdby, o_date
FROM PERSON WHERE USER_ID = p_userid;
END;
/
例子
调用存储过程的Java代码如下所示,OUT参数在 CallableStatement 的getXXX()方法中使用。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
public class Main {
private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String DB_CONNECTION = "jdbc:oracle:thin:@localhost:1521:YourDatabase";
private static final String DB_USER = "user";
private static final String DB_PASSWORD = "password";
public static void main(String[] argv) throws Exception {
Class.forName(DB_DRIVER);
Connection dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,
DB_PASSWORD);
CallableStatement callableStatement = null;
String getPERSONByUserIdSql = "{call getPERSONByUserId(?,?,?,?)}";
callableStatement = dbConnection.prepareCall(getPERSONByUserIdSql);
callableStatement.setInt(1, 10);
callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);
callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);
callableStatement.registerOutParameter(4, java.sql.Types.DATE);
callableStatement.executeUpdate();
String userName = callableStatement.getString(2);
String createdBy = callableStatement.getString(3);
Date createdDate = callableStatement.getDate(4);
System.out.println("UserName : " + userName);
System.out.println("CreatedBy : " + createdBy);
System.out.println("CreatedDate : " + createdDate);
callableStatement.close();
dbConnection.close();
}
}
以上内容是否对您有帮助:

免费 AI IDE


更多建议: