?????洢???????????????????У??????????????????SQL ??伯???洢????????У?????????α??????ε??ò??????α?????????????洢?????????????????????????洢??????в????????????????????????java?е???oracle??洢?????
????java?е???oracle??洢????
????????????£?

??????? ??????????洢??????????????????????oracle?????????????????OracleOraDb11g_home1TNSListener??OracleServiceORCL??
?????洢??????????????????????????????????н????????
????create or replace procedure queryempinfo(eno in number??
????pename out varchar2??
????psal out number??
????pjob out varchar2)
????as
????begin
????--?????????????? ??н???λ
????select ename?? sal?? job into pename?? psal?? pjob from emp where empno = eno;
????end;
???????? ???????????oracle??jdbc??jar????Procedure????????£?
package com.tomhu.procedure;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
public class Procedure {
private Connection conn;
private CallableStatement stat;
private ResultSet rs;
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String driverName = "oracle.jdbc.driver.OracleDriver";
String username = "scott";
String password = "******";
String sql = "call queryempinfo(??????????)";
// ????洢????
public void callProcedure() {
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url?? username?? password);
stat = conn.prepareCall(sql);
// ???????????????????????
stat.setInt(1?? 7566);
stat.registerOutParameter(2?? OracleTypes.VARCHAR);
stat.registerOutParameter(3?? OracleTypes.NUMBER);
stat.registerOutParameter(4?? OracleTypes.VARCHAR);
stat.execute();
String name = stat.getString(2);
int sal = stat.getInt(3);
String job = stat.getString(4);
System.out.println("name: " + name + "?? sal: " + sal + "?? job: " + job);
} catch (Exception e) {
e.printStackTrace();
} finally {
close(conn?? stat?? rs);
}
}
// ???????
public void close(Connection conn?? CallableStatement stat?? ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
rs = null;
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
stat = null;
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}
public static void main(String[] args) {
new Procedure().callProcedure();
}
}
???????? ?????????????
????name: JONES?? sal: 2975?? job: MANAGER