반응형
PROCEDURE
CREATE OR REPLACE PROCEDURE RES
IS
    V_SQL VARCHAR2(1000);
    V_DEPTNO DEPT.DEPTNO%TYPE := 50;
    V_DNAME DEPT.DNAME%TYPE := '테스트';
    V_LOC DEPT.LOC%TYPE := '서울';
BEGIN
    V_SQL := 'INSERT INTO DEPT01 VALUES (:A,:A,:A)';
    EXECUTE IMMEDIATE V_SQL USING V_DEPTNO, V_DNAME, V_LOC;
    --SQL PROCEDURE에서 바인딩변수 기술시 USING사용
END;
package dbc7;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;

public class ProcedureCall {
	public static void main(String[] args) {

		try {
			// 데이터베이스 드라이버를 로드
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// Connection 객체 생성
			Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe"
            , "test", "1111");
			// 프로시저를 실행할 수 있는 Statement 객체 생성
			CallableStatement cstmt = con.prepareCall("{call res()}");//리턴값 없다->프로시저
			// ?에 값 바인딩
			// 프로시저 실행
			cstmt.executeQuery();
			// 다 사용한 객체 닫기
			cstmt.close();
			con.close();
			System.out.println("프로시저 호출 완료");
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
}

 

 

 

변경값 입력을 통한 
CREATE OR REPLACE PROCEDURE RES(
    p1 DEPT.DEPTNO%TYPE,
    p2 DEPT.DNAME%TYPE,
    p3 DEPT.LOC%TYPE
)
IS
    V_SQL VARCHAR2(1000);
BEGIN
    V_SQL := 'INSERT INTO DEPT01 VALUES (:A,:A,:A)';
    EXECUTE IMMEDIATE V_SQL USING p1, p2, p3;
END;
package dbc7;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;

public class ProcedureCall {
	public static void main(String[] args) {

		try {
			// 데이터베이스 드라이버를 로드
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// Connection 객체 생성
			Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "1111");
			// 프로시저를 실행할 수 있는 Statement 객체 생성
			CallableStatement cstmt = con.prepareCall("{call res(?,?,?)}");//바인드변수
			// ?에 값 바인딩
			cstmt.setInt(1, 70);
			cstmt.setString(2,"tt");
			cstmt.setString(3,"seoul");
			// 프로시저 실행
			cstmt.executeQuery();
			// 다 사용한 객체 닫기
			cstmt.close();
			con.close();
			System.out.println("프로시저 호출 완료");
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
}
반응형

'[JDBC]' 카테고리의 다른 글

[JDBC] FUNCTION  (0) 2024.02.02
[JDBC] TRANJACTION - COMMIT, ROLLBACK, 원자성  (0) 2024.02.01
[JDBC] ex) [회원정보테이블]  (0) 2024.01.31

+ Recent posts