본문 바로가기
컴퓨터관련/Oracle

[Oracle]오라클 쿼리 실행 시 바인드변수 이용하기

by 빛과 어둠사이 2024. 8. 7.
728x90
반응형
SMALL

오늘은 오라클에서 쿼리를 실행할 때 바인딩변수를 이용해서

값을 적용하고 쿼리를 실행하는 방법을 정리해보고자 합니다.

 

쿼리를 실행할 때 특정 값이 바꾸면서 실행을 해야 할 때가 있습니다.

그럴 때 쿼리에서 찾아바꾸기로 바꾸고 실행을 시키면 됩니다.

그렇지만 이렇게 되면 누락이 있거나 바꾸면 안될 곳도 바꾸게 되는 경우가

발생이 될 수도 있습니다.

그러면 쿼리 결과가 원하는 것과 다르게 나올 수 있습니다.

 

그래서 이렇게 계속해서 바꾸고 해야 할 때

바인드변수를 이용해서 쿼리 실행 시

변수값을 지정해주고 실행을 시킬 수 있습니다.

 

그러면 해당 쿼리 실행 시 해당 변수에 해당 값으로 들어가짐으로서

실행이 될 수 있습니다.

그러면 원하는 곳만 정확하게 원하는 값으로 변경하여

쿼리를 실행할 수 있는 것입니다.

 

728x90

 

1. 임시테이블 생성 및 데이터 확인

우선 임시테이블 생성하고 데이터를 확인해보겠습니다.

특정 테이블을 만들고, insert를 할 수도 있지만 

저같은 경우에는 이번에만 쓸 것이기 때문에 별도로 테이블을 만들지는 않았습니다.

WITH문을 이용해서 임시테이블 생성하여

사용하였습니다.

 

저는 아래처럼 쿼리를 작성하였습니다.

이름, 주소, 나이, 성별을 임의로 만들어서

테이블 생성하고 조회를 해보았습니다.

--1. 임시 테이블 생성하여 데이터 확인
WITH tmp_table AS (
SELECT '홍길동' AS name, '30' AS age , '서울시 강남구 강남동' AS addr, 'M' AS sex FROM dual    
UNION SELECT '홍길순' AS name, '28' AS age , '서울시 강남구 역삼동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '고길동' AS name, '50' AS age , '서울시 마포구 공덕동' AS addr, 'M' AS sex FROM dual 
UNION SELECT '고봉순' AS name, '38' AS age , '경기도 성남시 분당구 분당동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '임길순' AS name, '40' AS age , '인천시 부평구 부평동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '김복길' AS name, '60' AS age , '경기도 일산시 일산동구 정발산동' AS addr, 'M' AS sex FROM dual 
)
SELECT *
FROM tmp_table
;

 

위처럼 쿼리를 작성하였습니다.

총 6개의 데이터를 가진 tmp_table라는 테이블을 만든 것입니다.

그리고 조회를 하도록까지 만든 것입니다.

 

 

위처럼 쿼리를 작성하고

실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 제가 입력한 데이터 6개가 나오는 것을 볼 수 있습니다.

 

 

2. 바인드 변수 적용

이번에는 바인드변수를 적용해보도록 하겠습니다.

바인드변수를 적용하는 것은 간단합니다.

:(콜론) 을 붙이고 변수명을 붙여주시면 되십니다.

예시 쿼리를 작성해보도록 하겠습니다.

저는 아래처럼 예시 쿼리를 작성하였습니다.

 

--2. 나이 조건 변수 설정
WITH tmp_table AS (
SELECT '홍길동' AS name, '30' AS age , '서울시 강남구 강남동' AS addr, 'M' AS sex FROM dual    
UNION SELECT '홍길순' AS name, '28' AS age , '서울시 강남구 역삼동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '고길동' AS name, '50' AS age , '서울시 마포구 공덕동' AS addr, 'M' AS sex FROM dual 
UNION SELECT '고봉순' AS name, '38' AS age , '경기도 성남시 분당구 분당동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '임길순' AS name, '40' AS age , '인천시 부평구 부평동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '김복길' AS name, '60' AS age , '경기도 일산시 일산동구 정발산동' AS addr, 'M' AS sex FROM dual 
)
SELECT *
FROM tmp_table
WHERE age >= :age
;

 

:age 라고 해서 age라는 바인딩변수를 설정하였습니다.

그러면 이제 쿼리 실행 시 변수에 필요한 값을 넣어주면

해당 값보다 같거나 큰 데이터에 대해서만

나오게 되는 것입니다.

 

 

위처럼 쿼리를 작성하였고

실행을 하게 되면 아래처럼 팝업이 뜨게 됩니다.

그러면 아래에서 변수에 들어갈 값을 넣어주시면 되십니다.

 

저는 위처럼 40을 넣었습니다.

그러면 where age >= 40

이런 식으로 바뀌게 되는 것입니다.

 

위처럼 40을 넣고 확인버튼을 누르거나 엔터를 치게 되면

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 age값이 40이상인 것에 대해서만

결과가 나오게 되는 것을 확인할 수 있습니다.

 

 

반응형

 

3. 다중 바인드변수

위 쿼리는 변수를 하나만 설정해보았습니다.

그런데 변수를 한개가 아닌 여러개도 설정이 가능합니다.

여러개 설정하는 것은 똑같이 변수를 작성해주시면 되시는 것입니다.

예시 query를 작성하여 보여드리도록 하겠습니다.

 

--3. 나이, 성별 변수 설정
WITH tmp_table AS (
SELECT '홍길동' AS name, '30' AS age , '서울시 강남구 강남동' AS addr, 'M' AS sex FROM dual    
UNION SELECT '홍길순' AS name, '28' AS age , '서울시 강남구 역삼동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '고길동' AS name, '50' AS age , '서울시 마포구 공덕동' AS addr, 'M' AS sex FROM dual 
UNION SELECT '고봉순' AS name, '38' AS age , '경기도 성남시 분당구 분당동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '임길순' AS name, '40' AS age , '인천시 부평구 부평동' AS addr, 'W' AS sex FROM dual 
UNION SELECT '김복길' AS name, '60' AS age , '경기도 일산시 일산동구 정발산동' AS addr, 'M' AS sex FROM dual 
)
SELECT *
FROM tmp_table
WHERE age >= :age
AND sex = :sex 
;​

 

저는 위와 같이 변수를 두개 설정하였습니다.

2번 쿼리에서 사용한 것에 sex. 즉 성별을 추가하였습니다.

그러면 바인드변수가 2개가 된 것입니다.

 

 

위처럼 쿼리를 작성하고 실행을 하게 되면

2번처럼 팝업이 뜨게 되어있습니다.

아래처럼 팝업이 뜨게 됩니다.

 

아까 2번에서는 age에 대해서만 있었는데,

이번에는 sex로 해서 성별까지 입력하라고 나오고 있습니다.

그러면 이제 성별 조건에 대한 값도 넣어주시면 되십니다.

 

그리고 저는 DBeaver 툴을 사용합니다.

이 툴에서는 문자열을 바인드변수로 입력할 때는

'(외따옴표)를 붙여야 하네요.

이건 참고를 해주시면 되실 것 같습니다.

 

위처럼 바인딩 변수에 대해서 값도 설정을 하고

확인버튼을 누르면 

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 나이는 40이상이면서

성별은 남자인 것에 대해서만 나오는 것을

확인할 수 있습니다.

 

SMALL

 

4. Oracle SQL Developer Tool

이번에는 Oracle에서 공식적으로 제공하는 기본 툴인

Oracle SQL Developer 에서 실행을 해보도록 하겠습니다.

쿼리는 3번에서 실행한 쿼리와 동일한 쿼리를 실행해보도록 하겠습니다.

 

위처럼 쿼리를 작성하였습니다.

그리고 실행을 하면 아래와 같이 나오게 됩니다.

위처럼 팝업이 뜨면서 바인드변수에 대한 값을 입력하라고 나오게 됩니다.

그러면 해당 변수에 대해서 값을 입력해주시면 되십니다.

 

저는 age는 30을 넣었고,

sex는 W를 넣어서 여자만 나오도록 설정을 해보았습니다.

그리고 Oracle SQL Developer에서는 문자열일 때 

'(외따옴표)를 붙이지 않아도 되더라고요.

그러니 이 부분은 참고 부탁드립니다.

사용하는 툴마다 다른 것 같으니 이건 사용하시는 툴에 맞춰서 확인 후 

사용해주시면 되실 것 같아요.

 

 

위처럼 바인드 변수에 대한 값을 설정하고

적용버튼으로 쿼리를 실행시켰습니다.

그랬더니 결과는 아래처럼 나오는 것을 확인할 수 있습니다.

 

 

위처럼 나이는 30 이상, 성별은 여자인 데이터에 대해서만

나오는 것을 확인할 수 있습니다.

 

 

 

 

 

오늘은 오라클에서 바인딩변수를 활용하여

쿼리를 실행하는 방법에 대해서 정리를 해보았습니다.

 

위에서 얘기한 것처럼 찾아바꾸기 등을 이용해서

쿼리를 변경하고 실행을 할 수 있습니다.

그러다보면 원하지 않는 곳도 바뀔 수도 있고,

원하는 결과가 아닌 다른 값이 나올 수 있습니다.

그렇기 때문에 변경이 되어야 하는 부분에 대해서만

바인드 변수를 이용하여 설정하고 실행하면

정확하게 대체가 되기 때문에 정확한 결과를 확인할 수 있습니다.

 

 

 

저는 예전에는 위에서처럼 찾아바꾸기로 쿼리를 변경하고

실행을 많이 했었습니다.

그러다가 바인드변수에 대해서 알고 나서는

변수를 많이 사용하고 있습니다.

 

여러분들도 이 변수를 사용해서 정확하게 변경하고

편하게 쿼리를 실행하고 확인하시면 좋을 것 같습니다.

 

 

 

이상으로 Oracle에서 바인드변수 적용 및 사용하는 방법이였습니다~

 

 

 

 

Do it! 오라클로 배우는 데이터베이스 입문:비전공자도 기초부터 확실하게!, 이지스퍼블리싱

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90
반응형
LIST