JDBC OCI를 이용한 Array Test 예제
1. 오라클 쪽에서 배열에 매핑되도록 TYPE을 하나 만듭니다.
create or replace type MYARRAY as table of number;
2. 아래와 같은 PL/SQL Procedure를 만듭니다. 이 프로시저를 자바 Application에서 호출하여 배열로 값을 넘겨줘 EMP TABLE에 데이터를 저장 하게 됩니다.
create or replace array_test( p_array in myarray )
as
begin
for i in 1 .. p_array.count
loop
dbms_output.put_line( p_array(i) );
insert into emp(empno, ename) values (p_array(i), 'È«±æµ¿'||to_char(p_array(i)));
commit;
end loop;
end;
/
3. 자바 애플리케이션을 만듭니다.(전 Eclipse에서 작성 했습니다.) 주석을 푼 방식으로도 실행해 보세요~ OCI Driver를 사용하기 위해서는 로컬에 SQL*Net이 설치 되어 있어야 합니다. 즉 오라클 클라이언트등이 설치되어야 겠죠… 저의 경우엔 노트북에 오라클 서버가 설치되어 있구요…
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.driver.OraclePreparedStatement;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
public class OCIArrayTest
{
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:oci8:@WINK";
String user = "scott";
String password = "tiger";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//conn = DriverManager.getConnection("jdbc:oracle:oci8:@wink","scott", "tiger");
int intArray[] = { 10,9,8,77,65,26 };
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor( "MYARRAY", conn );
ARRAY array_to_pass = new ARRAY( descriptor, conn, intArray );
OraclePreparedStatement ps =
(OraclePreparedStatement)conn.prepareStatement( "begin array_test(:x); end;" );
ps.setARRAY( 1, array_to_pass );
ps.execute();
System.out.println("OK~~~");
}
catch(Exception e) {
e.printStackTrace();
}
}
}
4. EMP Table을 select 해보면 다음과 같이 데이터가 입력되어 있습니다.
……
……
……
8 홍길동8
77 홍길동77
65 홍길동65
26 홍길동26
10 홍길동10
9 홍길동9
댓글 없음:
댓글 쓰기