DBA가 되고 싶은 병아리

SQL*Plus 파일 명령 & 치환명령어 본문

Oracle Study/SQL

SQL*Plus 파일 명령 & 치환명령어

미스틱스 2012. 2. 3. 09:10

SQL*Plus 파일 명령

SQL 문은 Oracle Server 통신합니다. SQL*Plus 명령은 환경을 제어하고 질의 결과의 형식을 지정하며 파일을 관리합니다. 다음 테이블에는 사용 가능한 명령이 나타나 있습니다.

SAV[E] filename[.ext]
[REP[LACE] APP[END]]

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*Plus에서 값을 임시로 저장하기 위해서 & 치환변수 사용할 있습니다.
ACCEPT DEFINE 명령을 사용해서 SQL*Plus 변수를 미리 정의할 있습니다. ACCEPT 사용자 입력 라인을 읽고 그것을 변수에 저장합니다.

제한된 범위의 데이터의

·        현재 분기나 명시된 날짜 범위에만 해당되는 리포트.

·        특정 부서 내의 사람만을 디스플레이합니다.

기타 상호작용의 영향

상호작용의 영향은 WHERE 절에 대한 사용자 상호작용에만 국한되지 않습니다. 똑같은 원칙 다른 목표를 실행하는데도 사용할 있습니다. 예를 들면:

·        머리말과 꼬리말을 동적으로 변경합니다.

·        사용자가 아닌 파일로부터 입력 값을 얻습니다.

·        하나의 SQL 문장으로부터 다른 SQL 문장으로 값을 전달합니다.

SQL*Plus 사용자 입력에 대한 타당성 검사(데이터형 제외) 하지 않습니다. 사용자에 대해서 만드는 프롬프트를 단순하고 모호하지 않게 하십시오.

 

단일 엠퍼샌드(&) 치환변수

리포트를 실행할 사용자는 종종 리턴되는 데이터를 동적으로 제한하기를 원합니다. SQL*Plus 사용자 변수로써 이러한 융통성을 제공합니다. SQL 문장에서 각각의 변수를 인식 하기 위해서 & 사용합니다. 각각의 변수에 값을 정의할 필요는 없습니다.

표기

설명

&user_variable

SQL 문장에 있는 변수를 지칭합니다. 변수가 존재하지 않으면 SQL*Plus (SQL*Plus 일단 사용된 새로운 변수는 버립니다.) 대해서 사용자에게 프롬프트 합니다.

위의 예는 실행시에 종업원의 번호를 사용자에게 프롬프트하기 위한 SQL 문장을 생성합니다. 그리고 해당 종업원에 대해서 종업원 번호, 이름, 급여 그리고 부서 번호를 디스플레이합니다.

변수가 존재하지 않는다면, 단일 앰퍼샌드(&) 사용하여 명령어가 실행될 때마다 항상 사용자에게 프롬프트 합니다.

실행 시에 이름, 표현식 그리고 텍스트를 정의(계속)

위의 예는 EMP 테이블로부터 종업원  번호, 이름, 업무 그리고 실행 시에 사용자에 의해 명시되는 어떤 다른 열을 디스플레이합니다. 사용자는 또한 결과 데이터를 정렬하여 행과 열을 검색하기 위한 조건을 명시할 있습니다.

 

더블 엠퍼샌드(&&) 치환변수

매번 사용자에게 프롬프트하지 않고 변수 값을 재사용하고자 한다면 더블 앰퍼샌드(&&) 치환변수 사용할 있습니다. 사용자는 오직 한번만 값에 대해 프롬프트될 것입니다. 슬라이드의 예에서 사용자는 변수 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
--------- ----------- -------------
       30 SALES       CHICAGO

변수를 삭제하기 위해서 UNDEFINE 명령을 사용합니다.

SQL> UNDEFINE deptname
SQL> DEFINE deptname
symbol deptname is UNDEFINED

 

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