반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sleep()메소드
- 동기화
- MemoryStream
- 상관 서브 쿼리
- interrupted()
- 스레드그룸
- StringWriter
- include지시자
- Daemon()
- first-child
- String char[] 형변환
- 리눅스세팅
- char[] String 형변환
- ObjectInputStream
- ThreadGroup()
- isinterrupted()
- include 지시자
- include액션태그
- first-of-child
- 표현 언어
- interrupt()
- InputDialog
- 리눅스셋팅
- Linux세팅
- 아이디중복
- ID중복
- Linux셋팅
- 상관서브쿼리
- StringReader
- 메모리스트림
Archives
- Today
- Total
다연이네
[days05] 저장 프로시저 (stored procedure)를 사용하는 CallableStatement 예제 본문
반응형
1. 부서를 추가하는 저장 프로시저 (INSERT)
1) 오라클 - 프로시저 생성
create sequence seq_dept
increment by 10
start with 50
nocache;
create or replace procedure up_insertdept
(
pdname dept.dname%type
,ploc dept.loc%type
)
is
begin
insert into dept values(seq_dept.nextval, pdname, ploc);
commit; --커밋과 롤백 필수
--exception
end;
2) 이클립스 - 클래스 생성
package days05;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import com.util.DBConn;
public class Ex04 {
public static void main(String[] args) {
//dept 테이블에 insert 하는 저장 프로시저 : up_insertdept
//deptno 시퀀스 10
//dname, loc 입력용 매개변수 선언
// "{call 프로시저명(매개변수) }"
String sql = "{ call up_insertdept(?, ?) }"; //이러면 프로시저를 사용하는 sql이 됨
String dname = "QC";
String loc = "SEOUL";
Connection con = null;
CallableStatement cstmt = null; //이 의미는 프로시저를 호출해서 사용하겠다는 의미가 내포된 것
con = DBConn.getConnection();
try {
cstmt = con.prepareCall(sql);
cstmt.setString(1, dname);
cstmt.setString(2, loc);
int rowCount = cstmt.executeUpdate();
if(rowCount ==1) {
System.out.println("> 부서 추가 완료!!!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
cstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
DBConn.close();
}//main
}//class
2. 부서 정보를 수정하는 저장 프로시저 (UPDATE)
1) 오라클 - 프로시저 생성
create or replace procedure UP_UPDATEDEPT
(
pdeptno dept.deptno%type
, pdname dept.dname%type default null
, ploc dept.loc%type default null
)
is
vdname dept.dname%type;
vloc dept.loc%type;
begin
select dname, loc into vdname, vloc
from dept
where deptno = pdeptno;
if( pdname is null ) then
update dept
set loc = ploc, dname = vdname
where deptno = pdeptno;
elsif ( ploc is null )then
update dept
set loc = vloc, dname = pdname
where deptno = pdeptno;
else
update dept
set loc = ploc, dname = pdname
where deptno = pdeptno;
end if;
commit;
end;
2) 이클립스 - 클래스 생성
package days05;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import com.util.DBConn;
/**
* @author dayeon
* @date 2020. 11. 27-오후 5:13:37
* @subject
* @content
*/
public class Ex05 {
public static void main(String[] args) {
//dept 테이블에 update 하는 저장 프로시저 : up_updatedept
//deptno 시퀀스 10
//dname, loc 입력용 매개변수 선언
// "{call 프로시저명(매개변수) }"
String sql = "{ call up_updatedept(pdeptno=>?, pdname=> ?) }"; //이러면 프로시저를 사용하는 sql이 됨
int deptno = 60;
String dname = "DEVELOPER";//DEVELOPER";
//String loc = "POHANG";
Connection con = null;
CallableStatement cstmt = null; //이 의미는 프로시저를 호출해서 사용하겠다는 의미가 내포된 것
con = DBConn.getConnection();
try {
cstmt = con.prepareCall(sql);
// (?,?,?)
cstmt.setInt(1, deptno);
cstmt.setString(2, dname);
//cstmt.setString(3, loc);
int rowCount = cstmt.executeUpdate();
if(rowCount ==1) {
System.out.println("> 부서 수정 완료!!!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
cstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
DBConn.close();
}//main
}//class
3. 부서를 삭제하는 저장 프로시저 (DELETE)
1) 오라클 - 프로시저 생성
create or replace procedure UP_DELETEDEPT
(
pdeptno dept.deptno%type
)
is
begin
delete from dept where deptno = pdeptno;
commit;
end;
2) 이클립스 - 클래스 생성
package days05;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import com.util.DBConn;
public class Ex06 {
public static void main(String[] args) {
// up_deletedept
//deptno=60
String sql = "{ call up_deletedept(pdeptno=>? )}";
int deptno = 50;
Connection con = null;
CallableStatement cstmt = null;
con = DBConn.getConnection();
try {
cstmt=con.prepareCall(sql);
cstmt.setInt(1, deptno);
int rowCount = cstmt.executeUpdate();
if(rowCount==1) {
System.out.println("> 부서 삭제 완료!!!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
cstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
DBConn.close();
}
}
반응형
'JDBC' 카테고리의 다른 글
[days06] 회원 가입 - ID 중복 체크 버튼 테스트 (0) | 2020.11.30 |
---|---|
[days06] 부서번호를 입력받아 해당 사원 정보 출력하기 (0) | 2020.11.30 |
[days05] ResultSet 결과물에 대한 정보 추출, 사용 예제, ResultSetMetaData (0) | 2020.11.29 |
[days04] 게시판 만들기 (0) | 2020.11.26 |
[days04] 월급 금액 등급별로 사원 정렬해서 출력하기 (0) | 2020.11.26 |
Comments