자바 언어 에서 저장 프로 세 스 와 저장 함수 에 접근
java
:
, java oracle 。
oracle , oracle :oracle\product\10.2.0\db_1\jdbc\lib\ojbc14.jar, , , oracle , java !
-- !
1. oracle :
private static Connection conn;
static {
try {
// :
Class.forName("oracle.jdbc.driver.OracleDriver");
// test1
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "test1", "test1");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2. , :
create or replace procedure selectEmp(emp_no in number, ename out varchar2,job out varchar2 ,sal out number) is
begin
select ename,job,sal into ename,job,sal from emp where empno=emp_no;
end selectEmp;
java , :
public static void testprocedure() {
try {
// callabStatement int out ,
CallableStatement cas = conn
.prepareCall("{call selectEmp(?,?,?,?)}");
// 1
int index = 1;
//
cas.setInt(index++, 7369);
//
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
// ResultSet ResultSet true, false
boolean flag = cas.execute();
System.out.println(flag);
//
if (!flag) {
//
String ename = cas.getString(2);
String job = cas.getString(3);
int sal = cas.getInt(4);
System.out.println(ename);
System.out.println(job);
System.out.println(sal);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3. ,
create or replace procedure selectemp1(emp_no in number, emp_row out emp%rowtype) is
begin
select * into emp_row from emp where empno=emp_no;
end selectemp1;
java
public static void testprocedureRow() {
try {
// rowtype
CallableStatement cas = conn.prepareCall("{call selectemp1(?,?)}");
int index = 1;
//
cas.setInt(index++, 7369);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.ARRAY);
boolean flag = cas.execute();
System.out.println(flag);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
4. emp
, :
:
create or replace package empPackage is
--
type empcursor is ref cursor;
-- type
procedure selectEmps(emplist out empcursor);
end empPackage;
:
create or replace package body empPackage is
--
procedure selectEmps(emplist out empcursor) is
--s
begin
--
open emplist for select * from emp;
end;
--
end empPackage;
java :
public static void getprocedurePackage() {
try {
CallableStatement cas = conn
.prepareCall("{call empPackage.selectEmps(?)}");
int index = 1;
//
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR);
boolean flag = cas.execute();
System.out.println(flag);
// getCursor ResultSet
ResultSet rs = ((OracleCallableStatement) cas).getCursor(1);
while (rs.next()) {
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
1. ,
create or replace function sumSal(emp_no number)--function ( )
return number --
as
--
emp_sal emp.sal%type;
emp_comm emp.comm%type;
total emp.sal%type;
begin
select sal,comm into emp_sal,emp_comm from emp where empno=emp_no;
total := emp_sal*12+nvl(emp_comm,0);
return total;-- ,
end;
java
public static void getfunction() {
try {
//
CallableStatement cas = conn.prepareCall("{?=call sumSal(?)}");
int index = 1;
// parameterIndex OUT JDBC sqlType。
// OUT
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
//
cas.setInt(index++, 7369);
boolean flag = cas.execute();//
System.out.println(flag);
System.out.println(cas.getInt(1));
/**
* , 1。
* get 。
*/
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2. ,
(1)
create or replace package functionEmps is
--
type empcl is ref cursor;
function queryEmps return empcl;
end functionEmps;
(2)
create or replace package body functionEmps is
function queryEmps return empcl is
emp_cl empcl;
begin
open emp_cl for select * from emp;
return emp_cl;
end;
end functionEmps;
java :
public static void testpackage(){
try {
CallableStatement cas = conn.prepareCall("{?=call functionEmps.queryEmps}");
int index = 1;
//
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR);
boolean flag = cas.execute();
System.out.println(flag);
ResultSet rs = ((OracleCallableStatement) cas).getCursor(1);
while (rs.next()) {
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
, ! , !
Oracle :Class.forName("oracle.jdbc.driver.OracleDriver");
:jdbc:oracle:thin:@localhost:1521:orcl", "test1", "test1"
。
(1) CallableStatement , !
CallableStatement java.sql , SQL 。JDBC API SQL , RDBMS 。 。 , OUT 。 、 。 , 1。
(2)registerOutParameter
parameterIndex OUT JDBC sqlType。
(3)cas.execute(); boolean , PreparedStatement SQL , SQL 。 ,execute ,executeQuery executeUpdate 。
execute boolean , 。 getResultSet getUpdateCount , getMoreResults 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.