일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 페이징
- 25가지 효율적인 sql작성법
- 추상클래스
- 전자정부
- 자바 야구게임
- 다운캐스팅
- 단축키
- Validations
- IBatis procedure
- Random
- 로또
- Full text
- 상속예제
- 스프링
- 업캐스팅
- 다형성
- 상속
- full text indexing
- 이클립스
- 자바
- 야구게임
- Login with OAuth Authentication
- jquery
- 전체텍스트
- 전체
- while
- 형변환
- 가변인자
- angular2
Archives
- Today
- Total
nalaolla
IBatis의 Procedure 사용예제 본문
728x90
반응형
----------------------------------------------
사용된 개발환경
사용된 개발환경
- iBATIS : 2.3.0.677
- Oracle : 10g
- eclipse : wtp All-in-one R-1.5.4-200705021353
- xml설정파일에서는 대소문자 구분이 의외로 굉장히 중요하다. 필자의 경우 jdbcType 의 값을 INTEGER로 줘야 하는데도 불구하고 Integer로 줘서 한참동안이나 고생을 했다.
- Procedure에서는 Map을 사용할 경우 queryForObject 메소드의 반환 객체에 값이 셋팅되는것이 아니고 넘긴 객체에 값이 셋팅된다. 기본적으로 반환되는 Map객체는 null로 넘어온다. 프로시저에서 넘긴값을 인자로 넘긴 Map에 셋팅되니 이점에 유의해서 사용해야 한다.
IN타입[#1]
- IN파라미터란! : 호출자에 의해 프로시저에 전달되는 파라미터이고 읽기전용의 값이다. 즉 프로시저는 이 값을 변경할수는 없다.
- 테스트 케이스 : 여기서는 IN타입으로 값을 받아와서 특정 테이블에 값을 입력하는 케이스를 보여준다.
프로시저
CREATE OR REPLACE PROCEDURE procedurein (p_param IN NUMBER) IS |
테이블 생성
create table tablein(val number); |
sqlMap파일
<?xml version="1.0" encoding="UTF-8" ?> |
실행코드
package com.mydomain.data; |
결과
SQL> select * from tableIN; |
여기서 보면 인자로 123이라는 숫자값을 넘겼으며 프로시저에 정의된 내용대로 tableIN이라는 테이블에 값이 정상적으로 입력이 된것을 볼수 있다.
OUT타입[#2]
- OUT파라미터란! : 프로시저에서 값이 변경될수 있다. 이 파라미터는 프로시저가 다수의 정보를 호출자에게 반환시켜주어야 하는 경우에 주로 사용한다.
- 테스트 케이스 : 여기서는 IN타입으로 입력된 숫자값에 3을 더한 값을 반환하는 것을 보여주는 예제이다.
프로시저
CREATE OR REPLACE PROCEDURE procedure_out(p_inval in integer, p_outval out integer) IS |
sqlMap파일
<?xml version="1.0" encoding="UTF-8" ?> |
실행코드
package com.mydomain.data; |
결과
result : 126 |
인자로 넘겨진 값인 123에 3을 더해 126이라는 값이 반환되었다.
INOUT타입[#3]
- INOUT파라미터란! : 프로시저가 읽고 쓰는 작업을 동시에 할수 있는 파라미터를 의미한다.
- 테스트 케이스 : 여기서는 INOUT타입으로 값을 받아와서 값의 위치를 서로 바꿔서 값을 입력한 뒤 반환하는 케이스를 보여주는 예제이다.
프로시저
CREATE OR REPLACE PROCEDURE procedure_inout(p_inout1 in out integer, p_inout2 in out integer) IS |
sqlMap파일
<?xml version="1.0" encoding="UTF-8" ?> |
실행코드
package com.mydomain.data; |
결과
인자로 넘어가는 값 |
보면 처음에 넘긴값은 p_inout1값이 7이고 p_inout2값인데 반환값은 반대로 5, 7이다. 즉 프로시저의 처리고 값이 정상적으로 바껴서 넘어온것이다.
728x90
반응형