DB 사용자 정의 데이터 타입
티베로 DBMS가 제공하는 tbJDBC에서 사용자 정의 데이터 타입을 처리하는 방법을 설명합니다.
JDBC 표준에서는 사용자 정의 데이터 타입(User Defined Types) 지원을 위해서 java.sql.Array, ja va.sql.Struct 인터페이스를 제공하고 있습니다.
Array 타입: 동일한 타입의 원소들을 모아서 저장하기 위한 타입
Struct 타입: 여러 가지 타입의 원소들을 저장하기 위한 타입
Array 타입
tbJDBC는 java.sql.Array 인터페이스를 구현한 com.tmax.tibero.jdbc.TbArray 클래스를 제공합니다.
Array 데이터 타입 선언
사용자는 아래와 같이 Array 타입을 정의할 수 있습니다.
create or replace type t_varr is varray(16) of varchar2(128);
create or replace type t_tbl is table of varchar2(128);Array 데이터 타입 IN
Array를 객체를 만들고 PSM 프러시저의 IN 인자로 전달하기 위해서 아래의 과정으로 처리합니다.
Connection 객체로부터 Array를 생성합니다.
프러시저에 Array 객체를 바인딩합니다.
아래는 Array를 객체를 만들고 PSM 프러시저의 IN 인자로 전달하는 예제입니다.
Array 데이터 타입 OUT
프러시저로부터 OUT 인자 형태로 Array 객체를 받아오기 위해, 아래의 단계로 처리합니다.
OUT 바인딩을 통한 프러시저를 호출하면 프러시저는 Array 타입 객체를 돌려줍니다.
CallableStatement.getArray() 함수를 통해 Array 객체를 받아옵니다.
Array 객체로부터 값을 받아옵니다.
아래는 프러시저로부터 OUT 인자 형태로 Array 객체를 받아오는 예제입니다. (p_out_t_varr 프러시저는 16개의 문자열 배열을 돌려주도록 작성되어 있습니다.)
Struct 타입
build-in 타입의 collection을 처리하는 Array와 달리 Struct는 여러 종류의 타입을 묶어서 나타내는 경우에 사용합니다. tbJDBC는 java.sql.Struct 인터페이스를 구현한 com.tmax.tibero.jdbc.Tb Struct 클래스를 제공합니다.
Struct 데이터 타입 선언
아래와 같이 Struct 타입을 선언할 수 있습니다.
Struct 데이터 타입 IN
Struct 객체를 IN 인자로 전달하기 위해서는 아래의 단계로 처리합니다.
Connection 객체로부터 Struct를 생성합니다.
프러시저에 Struct 객체를 바인딩합니다.
아래는 Struct 객체를 IN 인자로 전달하는 예제입니다. print_obj 프러시저는 Struct 객체를 인자로 받아서 처리하는 기능을 담당합니다.
Struct 데이터 타입 OUT
프러시저로부터 Struct 객체를 OUT 인자 형태로 받아오기 위해 아래의 단계로 처리합니다.
OUT 바인딩을 통한 프러시저를 호출한다. 프러시저는 Struct 타입의 객체를 돌려줍니다.
CallableStatement.getStruct() 함수를 통해 Struct 객체를 받아옵니다.
Struct 객체로부터 값을 받아옵니다.
아래는 프러시저로부터 Struct 객체를 OUT 인자형태로 받아오는 예제입니다. p_out_t_obj 프러시저는 NUMBER, VARCHAR, DATE 형태의 object 객체를 돌려줍니다.
Array, Struct 타입 테스트 코드
아래는 위의 Array, Struct 타입 생성 및 테스트를 위한 프러시저 코드입니다.
Last updated

