DBA가 되고 싶은 병아리
SQL*Plus 파일 명령 & 치환명령어 본문
SQL*Plus 파일 명령
SQL 문은 Oracle Server와 통신합니다. SQL*Plus 명령은 환경을 제어하고 질의 결과의 형식을 지정하며 파일을 관리합니다. 다음 테이블에는 사용 가능한 명령이 나타나 있습니다.
명 령 |
설 명 |
SAV[E] filename[.ext] |
SQL 버퍼의 현재 내용을 파일에 저장합니다. 기존 파일에 추가하려면 APPEND를 사용하고 기존 파일에 겹쳐쓰려면 REPLACE를 사용합니다. 파일 이름의 기본 확장자는 .sql입니다. |
GET filename[.ext] |
이전에 저장한 파일 내용을 SQL 버퍼에 씁니다. 파일 이름의 기본 확장자는 .sql입니다. |
STA[RT] filename[.ext] |
이전에 저장한 명령 파일을 실행합니다. |
@ filename |
이전에 저장한 명령 파일을 실행합니다(START와 동일). |
ED[IT] |
편집기를 호출하여 afiedt.buf라는 파일에 버퍼 내용을 저장합니다. |
ED[IT] [filename[.ext]] |
편집기를 호출하여 저장된 파일의 내용을 편집합니다. |
SPO[OL] [filename[.ext] | OFF | OUT] |
질의 결과를 파일에 저장합니다. OFF는 스풀 파일을 닫고 OUT은 스풀 파일을 닫은 후 파일 결과를 시스템 프린터로 전송합니다. |
EXIT |
SQL*Plus를 종료합니다. |
치환 변수 제한된 범위의 데이터의 예 · 현재 분기나 명시된 날짜 범위에만 해당되는 리포트. · 특정 부서 내의 사람만을 디스플레이합니다. 기타 상호작용의 영향 · 머리말과 꼬리말을 동적으로 변경합니다. · 사용자가 아닌 파일로부터 입력 값을 얻습니다. · 하나의 SQL 문장으로부터 다른 SQL 문장으로 값을 전달합니다. SQL*Plus는 사용자 입력에 대한 타당성 검사(데이터형 제외)를 하지 않습니다. 사용자에 대해서 만드는 프롬프트를 단순하고 모호하지 않게 하십시오.
|
단일 엠퍼샌드(&)와 치환변수
위의 예는 실행시에 종업원의 번호를 사용자에게 프롬프트하기 위한 SQL 문장을 생성합니다. 그리고 해당 종업원에 대해서 종업원 번호, 이름, 급여 그리고 부서 번호를 디스플레이합니다. |
실행 시에 열 이름, 표현식 그리고 텍스트를 정의(계속)
|
더블 엠퍼샌드(&&) 치환변수
매번 사용자에게 프롬프트하지 않고 변수 값을 재사용하고자 한다면 더블 앰퍼샌드(&&) 치환변수를 사용할 수 있습니다. 사용자는 오직 한번만 값에 대해 프롬프트될 것입니다. 슬라이드의 예에서 사용자는 변수 column_name 에 대해서 오직 한번만 값을 요구합니다. 사용 자(deptno)에 의해서 제공된 값은 디스플레이와 데이터 정렬 양쪽에서 사용됩니다.
SQL*Plus는 DEFINE 명령을 사용하여 공급된 값을 저장합니다. 그것은 변수 이름이 참조될 때 마다 다시 사용될 것입니다. 사용자 변수를 삭제하기 위해서 UNDEFINE 명령을 사용해야 한다.
사용자 변수 정의
SELECT 문장을 실행하기 전에 사용자 변수를 미리 정의할 수 있습니다. SQL*Plus는 사용자 변수를 정의하고 설정하기 위해서 두개의 명령을 제공합니다: DEFINE과 ACCEPT
명령 |
설명 |
DEFINE variable = value |
CHAR 데이터형 사용자 변수를 생성하고 그것에 값을 할당합니다. |
DEFINE variable |
변수, 변수 값, 변수 데이터형을 디스플레이합니다. |
DEFINE |
값과 데이터형을 가진 모든 데이터형을 디스플레이 합니다. |
ACCEPT (see syntax on next slide) |
사용자 입력 라인을 읽고 그것을 변수에 저장합 니다. |
ACCEPT 명령어 사용
ACCEPT 명령은 DEPT라는 변수에서 읽습니다. 프롬프트는 변수를 사용자에게 요구할 때 "Provide the department name:”라는 메시지를 디스플레이 합니다. 그런 다음에 SELECT 문장 은 사용자가 입력한 부서 값을 받아서, 그것을 DEPT 테이블로부터 적절한 행을 검색하는데 사용합니다.
사용자가 부서 이름에 대해서 올바른 값을 입력한다면, SELECT 문장은 사용자가 입력한 값을 받아서 WHERE 절에서 그것을 DNAME과 비교하는, 다른 어떤 SELECT 문장과 똑같 은 방법으로 실행합니다.
& 문자는 ACCEPT 명령에서 DEPT 변수와 함께 나타나지 않음을 주목하십시요. &는 오직 SELECT 문장에만 나타납니다.
지침
· ACCEPT와 DEFINE 명령 모두는 변수가 존재하지 않으면 변수를 생성합니다. 존재한다면 자동적으로 재정의할 것입니다.
· DEFINE 명령을 사용할 때, 공백을 포함하는 스트링을 둘러싸기 위해서 단일 인용 부호(' ')를 사용합니다.
· 다음에 대해서 ACCEPT 명령을 사용합니다.
-사용자 입력을 받아들일 때 여러분이 원하는 프롬프트를 제공합니다. 그렇지않으면, 디폴트로 “Enter value for 변수명”이 나타납니다.
-NUMBER 또는 DATE 데이터형 변수를 명시적으로 정의합니다.
-보안 문제때문에 사용자 입력을 숨깁니다.
DEFINE 명령 사용
변수를 생성하기 위해서 DEFINE 명령을 사용할 수 있으며 생성한 다음에 변수를 사용합니다. 위의 예는 부서 이름 SALES를 포함하는 DEPTNAME 변수를 생성합니다. 그런 다음에 SQL 문장은 sales 부서의 번호와 지역을 디스플레이하기 위해서 이 변수를 사용합니다.
DEPTNO DNAME LOC |
변수를 삭제하기 위해서 UNDEFINE 명령을 사용합니다.
SQL> UNDEFINE deptname |
SQL*Plus 환경 정의
SET 명령을 사용하여 현재 운용중인 SQL*Plus 환경을 제어합니다.
구문형식에서:
system_variable 세션의 환경을 제어하는 변수입니다.
value 시스템 변수를 위한 값입니다.
SHOW 명령을 사용하여 설정 내용을 검사할 수 있습니다. 슬라이드의 SHOW 명령은 ECHO가 ON인 OFF인지를 검사합니다.
모든 SET 변수 값을 보기 위해서 SHOW ALL 명령을 사용합니다.
명령 참조에 대해 보다 많은 정보를 알고자 한다면, SQL*Plus User’s Guide and Reference, Release 8을 참조하십시오.
SET 명령 변수
SET 변수와 값 |
설명 |
ARRAY[SIZE] {20| n} |
데이터베이스 데이터 패치 크기를 설정합니다. |
COLSEP {_|text} |
열 사이에 출력되는 텍스트를 설정합니다. 디폴트 스트링은 공백입니다. |
FEED[BACK] {6|n|OFF|ON} |
질의가 최소한 n 개의 레코드를 검색할 때 질의에 의해 리턴된 레코드의 개수를 디스플레이 합니다 |
HEA[DING] {OFF|ON} |
열 헤딩을 리포트에 디스플레이할 지의 여부를 결정합니다. |
LIN[ESIZE] {80|n} |
리포트에 대해서 라인당 n 개 까지의 문자 개수를 설정 합니다. |
LONG {80|n} |
LONG 값을 디스플레이하기 위해 최대 폭을 설정합니다. |
PAGES[IZE] {24|n} |
|
PAU[SE] {OFF|ON|text} |
터미널을 제어하도록 해줍니다. (각각의 멈춤(pause) 마다 리턴 키를 눌러야 합니다.) |
TERM[OUT] {OFF|ON} |
결과를 화면에 디스플레이할 지의 여부를 결정합니다. |
'Oracle Study > SQL' 카테고리의 다른 글
user 재정의 하는 방법 (0) | 2012.03.05 |
---|---|
오라클 단일행 함수 (0) | 2012.03.03 |
Oracle Data Type의 종류? (0) | 2012.03.03 |
SQL이란? (0) | 2012.03.03 |
Trouble shooting의 기본적인 툴 SQL* PLUS (0) | 2011.07.15 |