오늘은 치환변수에 대해 알아보겠습니다!
스크립트 작성시
SQL문에서 & 치환을 사용하면 값을 입력하도록 요구할 수 있습니다.
동일한 컬럼을 데이터만 바꿔서 검색하거나 입력해야할 때,
앤퍼센드 치환변수를 사용하면 SQL문의 재사용성 및 범용성을 높일 수 있습니다.
[고객 테이블]
고객이름 | 나이 | 주소 | 총구매액 | 전화번호 | 추천인 |
A | 24 | 서울 | 30000 | 010-0123-4567 | null |
B | 29 | 서울 | 10000 | 010-1234-5678 | A |
C | 26 | 파주 | 25000 | 010-2345-6789 | A |
D | 27 | 제주 | 1000 | 010-3456-7891 | B |
예제1. &치환변수를 이용하여 이름을 입력받아
고객 정보를 조회하세요
SQL1> SELECT 고객이름, 나이, 전화번호 FROM 고객 WHERE 고객이름 = '&고객이름';
|
(&고객이름을 싱글 쿼테이션마크(')로 감싸준 이유는
입력받을 값이 CHAR이기 때문입니다)
결과:
SLQPLUS에서 위의 예제 코드를 입력하면
'ENTER VALUE FOR 고객이름:' 옆에 커서 부분이 나옵니다.
(JAVA의 SCANNER와 같은 방법이라고 생각하면 됩니다.)
A를 입력하면
WHERE절에 A를 넣은 쿼리와 같은 결과를 얻을 수 있습니다.
예제2. 회원가입을 위해 고객이름, 나이, 주소, 전화번호, 추천인을 입력받으세요.
(단, 고객이름은 무조건 입력받고 싶습니다.)
SQL1> INSERT INTO (SELECT 고객이름, 나이, 주소, 전화번호, 추천인 FROM 고객 WHERE 고객이름 IS NOT NULL WITH CHECK OPTION) VALUES('&고객이름', &나이, '&주소', '&전화번호', '&추천인'); |
with check option을 사용하면
WHERE절의 조건에 위배되지 않는 값만 입력하게 할 수 있습니다.
(view옵션에서 잠시 언급한 적이 있습니다.)
가능한 응용프로그램이 아닌 SQL문에서
위와같이 작동되도록 만드는 것이 성능에 더 좋다고 합니다.
(IF문으로 안해도 됨)
오늘은 여기까지
내일은 다중 INSERT문으로 다시 돌아올께요~
이 글이 도움되셨다면 아래 공감 꾹~
'SQL' 카테고리의 다른 글
ORACLE | 정규식 함수(regular expression) (0) | 2018.04.18 |
---|---|
ORACLE | 다중 INSERT문 4가지 방법 (0) | 2018.04.17 |
ORACLE | 인덱스 (INDEX) (2) | 2018.04.12 |
ORACLE | VIEW(뷰) (0) | 2018.04.11 |
ORACLE | SQL제약조건(데이터 정제하기) (0) | 2018.04.10 |