2024年4月11日发(作者:)

Java(CallableStatement)调用Oracle存储过程返回结果集(ResultSet)

一:无返回值的存储过程调用

存储过程:

CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN

VARCHAR2) AS

BEGIN

INSERT INTO (ID,NAME) VALUES (PARA1, PARA2);

END PRO_1;

Java代码:

package e;

import .*;

import Set;

public class CallProcedureTest1 {

public CallProcedureTest1() {

super();

}

public static void main(String[] args) {

String driver = "Driver";

String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl ";

String user = "admin";

String pwd = "password";

Connection conn = null;

CallableStatement cs = null;

ResultSet rs = null;

try {

e(driver);

conn = nection(url, user, pwd);

cs = eCall("{ call _1(?,?) }");

ing(1, "10");

ing(2, "Peter");

e();

} catch (SQLException e) {

tackTrace();

} catch (Exception e) {

tackTrace();

} finally {

try {

if (rs != null) {

();

}

if (cs != null) {

();

}

if (conn != null) {

();

}

} catch (SQLException e) {

}

}

}

}

备注,存储过程PRO_1中用到了表EMP(ID, NAME),需事先建好

二:有返回值的存储过程(非结果集)

存储过程:

CREATE OR REPLACE PROCEDURE PRO_2(PARA1 IN VARCHAR2,PARA2 OUT

VARCHAR2) AS

BEGIN

SELECT INTO PARA2 FROM EMP WHERE ID= PARA1;

END PRO_2;

Java代码:

package e;

import .*;