■ 프로시저란?
- 어떤 업무를 수행하기 위한 절차로 자주 쓰는 명령을 절차적으로 지정해둔 형태
■ 함수와 프로시져의 차이점
https://mjn5027.tistory.com/47
■ 프로시져 코딩 예시
-- 수정
create or replace procedure book_update(v_name IN varchar2, v_price IN number, v_idx IN number)
is
begin
UPDATE book SET name = v_name, price = v_price WHERE idx = v_idx;
commit;
end;
/
--삭제
create or replace procedure book_delete(v_idx IN number)
is
begin
DELETE from book WHERE idx = v_idx;
commit;
end;
/
-- 추가
create or replace procedure book_insert(v_name IN varchar2, v_price IN number)
is
begin
INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),v_name,v_price);
commit;
end;
/
■ 명령 프롬프트에서 프로시저 생성 및 실행하는 법
■ CallableStatement를 사용하여 프로시져 구문 쓰기
- CallableStatement는 PreparedStatement를 상속한다.
package mymain;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
//import oracle.jdbc.driver.OracleDriver;
public class MyMain_DBTest2_프로시져 {
//DB Driver Loading
//메인 메소드가 시작되기 전에 먼저 0순위로 선작업.
static {
// 0. 객체가 생성 되기 이전에 클래스를 메모리에 적재
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception{
// 1. Connection을 얻어오기
//(1) 연결경로, 사용자정보 가져오기
// jdbc:oracle:드라이버종류:@IP주소:포트:db아이디 <<- JavaEE에서 Data Source Explorer > Properties의 URL복사
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "test1";
String pwd = "test1";
//(2) Connection 인스턴스를 싱글톤 방식으로 가져온다.
Connection conn = DriverManager.getConnection(url, user, pwd);
System.out.println("---------Success Connection-------");
//2. Procedure사용할 객체
String sql = "call book_insert(?, ?)";
CallableStatement cstmt = conn.prepareCall(sql);
//3. Parameter
cstmt.setString(1, "And");
cstmt.setInt(2, 22000);
//4. 실행
cstmt.executeUpdate();
//5. 닫기 (열린 역순)
cstmt.close();
conn.close();
}
}
[출처]
함수와 프로시저의 차이 https://mjn5027.tistory.com/47
'Language > SQL' 카테고리의 다른 글
데이터베이스 환경 구축(설치) (0) | 2022.08.11 |
---|---|
파일시스템과 DBMS, RDMBS (0) | 2022.08.10 |
[DATABASE] MVC 모델 구현 _ 성적 관리 프로그램 (0) | 2022.04.25 |
[DATABASE] 자바를 통한 DB 모듈화 (0) | 2022.04.23 |
[DATABASE] PreparedStatement를 사용하여 시큐어코딩하기 (0) | 2022.04.21 |