brunch

You can make anything
by writing

C.S.Lewis

by GTPlus Sep 13. 2023

SQL*Plus 명령어 편집 및 저장

Oracle Database SQL*Plus 명령어 활용

안녕하세요. 지티플러스입니다.

이번 게시글에서는 SQL*Plus 여러 명령어를 사용한 명령어 편집과 저장을 다룹니다.



            LIST 명령어 -- 현재 명령어 확인          

            CHANGE 명령어 -- 행 편집          

            RUN 명령어 -- 명령어 수정 후 실행          

            INPUT 명령어 -- 새로운 행 추가

            APPEND 명령어 -- 버퍼에 있는 한 행의 끝에 텍스트를 추가

            DEL 명령어 -- 버퍼 행 삭제

            EDIT 명령어 -- 기본 텍스트 편집기 실행

            REMARK 명령어 -- 명령 파일에 설명 입력

            GET 명령어 -- 파일 읽어들이기          

            START 명령어 -- 명령 파일 읽기 및 파일에 포함된 명령어 실행          

            STORE 명령어 -- SET 변수를 호스트 운영체제 시스템 파일에 저장          





명령어 편집


SQL*Plus 명령어는 버퍼에 저장되지 않기 때문에 명령 프롬프트에 직접 입력된 SQL*Plus 명령어를 편집하려면 Backspace 키를 사용하거나 명령어를 다시 입력합니다.


버퍼에 저장된 SQL 명령어나 PL/SQL블록을 편집하려면 SQL*Plus 편집 명령어를 사용하거나 호스트 운영 체제 편집기를 사용합니다.


 


◆ 버퍼 내용 보기


LIST와 DEL 이외의 편집 명령어는 버퍼 내의 한 행에만 영향을 줍니다.

현재 명령어를 보려면 다음과 같이 LIST 명령어를 사용합니다.




◆ 현재 행 편집


SQL*Plus CHANGE 명령어를 사용하여 현재 행을 편집할 수 있습니다. 다음과 같은 여러 작업에 의해 어떤 행이 현재 행인지 결정됩니다.



1. 주어진 한 행을 LIST하면 그 행이 현재 행이 됩니다.


2. 버퍼의 명령어를 LIST하거나 RUN하면 그 명령어의 마지막 행이 현재 행이 됩니다. 

    (슬래시(/) 명령어를 사용하여 버퍼 명령어를 실행하면 현재 행은 영향을 받지 않습니다.)


3. 오류 메시지가 표시되는 경우에는 오류가 있는 행이 현재 행이 됩니다.



CHANGE 명령어는 현재 행에서 첫 번째로 나오는 수정될 문자열을 찾아 새로운 문자열로 대체합니다. 한 행 전체를 다시 입력하려면 CHANGE 명령어를 사용할 필요 없이 행 번호 다음에 공백을 입력하고 새로운 텍스트를 입력한 다음 Enter 키를 누릅니다.



다음은 첫 번째 행에서 DEPTNO를 DPTNO라고 잘못 입력한 예입니다.


DPTNO를 DEPTNO로 바꾸려면 다음과 같이 CHANGE 명령어를 사용하여 해당 행을 변경합니다.

입력하면 수정된 행이 화면에 나타납니다.


오류가 수정되고 나면 RUN 명령어를 사용하여 명령어를 다시 실행합니다. 명령어가 화면에 표시된 후 실행됩니다.



◆ 새로운 행 추가


현재 행 다음에 새로운 행을 추가하려면 INPUT명령어를 사용합니다. 

첫 번째 행 앞에 새로운 행을 추가하려면 텍스트 앞에 영(“0”)을 입력합니다.


수정한 SQL 명령어에 세 번째 행을 추가한다고 합시다. 두 번째 행이 현재 행이므로 INPUT (또는 I) 명령어를 입력하고 Enter를 누르면 새로운 행에 대한 프롬프트가 표시됩니다.


새로운 행을 작성 후 입력하면 다시 새로운 행에 대한 프롬프트가 표시됩니다.



행을 더 이상 입력하지 않을 경우, 빈 행을 입력한 다음 RUN 명령어를 사용하여 질의를 확인하고 재실행합니다.




◆ 한 행에 텍스트 추가 

버퍼에 있는 한 행의 끝에 텍스트를 추가하려면 APPEND 명령어를 사용합니다.


현재 질의의 세 번째 행에 공백과 DESC 절을 추가하려면 먼저 LIST 명령어를 사용하여 세 번째 행을 화면에 나타냅니다.


그리고 다음 명령어를 입력합니다. (APPEND와 DESC 사이에 두 개의 공백을 입력해야 합니다.)


RUN 명령어를 사용하여 질의를 확인하고 재실행합니다.



◆ 행 삭제 

버퍼 행을 삭제하려면 DEL 명령어를 사용합니다. 

LIST 명령어를 사용하여 삭제할 행을 화면에 나타냅니다. 


선택 절과 함께 DEL 명령어를 입력합니다. 


현재 행에서 마지막 행까지 지우려면 다음 DEL 명령어를 사용합니다.




◆ 시스템 편집기를 사용한 명령어 편집

EDIT 명령어를 입력하여 SQL*Plus를 종료하지 않고 호스트 운영 체제의 기본 텍스트 편집기를 실행할 수 있습니다. 



편집된 텍스트를 텍스트 편집기에 저장한 후 텍스트 편집기를 종료하면 편집된 텍스트가 버퍼로 다시 로드 됩니다.


EDIT에서 사용할 편집기를 EDT로 정의하려면 다음 명령어를 입력합니다.




명령어 저장


SQL*Plus에서는 명령 파일이라고 하는 파일에 하나 이상의 명령어를 저장할 수 있습니다. 명령 파일은 검색, 편집, 실행이 가능하며 특히 복잡한 명령어나 PL/SQL 블록 등을 저장하는 데 사용됩니다.



◆ 명령어 파일에 명령어 저장하기


하나 이상의 SQL 명령어, PL/SQL 블록, SQL*Plus 명령어를 명령 파일에 저장할 수 있습니다. 

SQL*PIus에서 명령 파일을 작성하는 방법에는 세 가지가 있습니다.


1. 명령어를 입력하고 버퍼의 내용을 저장합니다.


2. INPUT을 사용하여 명령어를 입력한 다음 버퍼 내용을 저장합니다.


3. EDIT를 사용하여 호스트 시스템 텍스트 편집기를 사용하는 파일을 새로 작성합니다.



SQL*Plus 명령어는 버퍼에 저장되지 않기 때문에 SQL*Plus 명령어를 저장하려면 두 번째와 세 번째 방법을 사용해야 합니다.


1. 버퍼 내용을 저장하여 명령 파일 작성


EDIT 명령어를 입력하여 SQL*Plus를 종료하지 않고 호스트 운영 체제의 기본 텍스트 편집기를 실행할 수 있습니다. 


파일 이름 뒤에는 SQL 질의 파일임을 표시하는 SQL 확장자가 붙습니다. 다른 파일 확장자를 사용하여 명령어나 블록을 저장하려면 파일 이름 끝에 마침표(.)를 입력한 다음 사용할 확장자를 입력합니다.


먼저 버퍼 내용을 LIST하여 현재 명령어가 화면에 나타나도록 합니다.


그리고 다음과 같이 SAVE 명령어 뒤에 파일 이름 DEPTINFO를 입력합니다.


SQL*Plus HOST 명령어와 그 뒤에 호스트 운영 체제의 파일 나열 명령어를 입력하면 DEPTINFO라는 명령 파일이 있는지 확인할 수 있습니다.


 

2. INPUT과 SAVE를 사용한 명령 파일 작성


INPUT을 사용하여 명령어를 입력하는 경우에는 SQL*Plus 명령어(및 하나 이상의 SQL 명령어나 PL/SQL 블록)를 버퍼에 입력할 수 있습니다. 


먼저 버퍼를 비웁니다.


그런 다음 INPUT을 사용하여 명령어를 입력합니다. (명령어의 마지막에 세미콜론을 입력하면 안됩니다.)


이제 SAVE 명령어를 사용하여 확장자가 SQL인 SALES 파일에 질의를 저장합니다. 


하나 이상의 SQL 명령어를 입력하려면 모든 SQL 명령어에 세미콜론을 없애고 APPEND를 사용하여 마지막 명령어를 제외한 모든 명령어에 세미콜론을 추가합니다.


하나 이상의 PL/SQL 블록을 입력하려면 블록 사이의 행에 마침표나 슬래시를 넣지 말고 블록을 하나씩 입력합니다. 그런 다음 마지막 블록을 제외한 각 블록의 마지막 행을 LIST하여 현재 행으로 만들고 INPUT 명령어를 사용하여 슬래시만 있는 행을 삽입합니다.


 

3. 시스템 편집기를 사용한 명령 파일 작성


EDIT 다음에 파일 이름을 입력함으로써 호스트 운영 체제 텍스트 편집기를 사용하여 명령 파일을 작성하는 방법도 있습니다.


명령 파일의 각 SQL 명령어 끝에는 세미콜론을, 각 PL/SQL 블록 다음에는 마침표를 입력해야 합니다. (여러 개의 SQL 명령어와 PL/SQL 블록을 포함할 수 있습니다.)


EDIT 명령어를 사용하여 명령 파일을 작성하는 경우, 파일의 마지막에 포함할 수 있지만, SAVE 명령어를 사용하여 명령 파일을 작성하는 경우, 파일 마지막에 슬래시가 추가되기 때문에 SQL*Plus 명령어를 포함시킬 수 없습니다. 이는 마지막 SQL 명령어 끝의 세미콜론(또는 마지막 PL/SQL 블록 뒤의 슬래시)에서 한 번, 파일 끝의 슬래시에서 한 번, 이렇게 두 번 명령 파일이 실행되도록 하기 때문입니다.



 

◆ 명령 파일에 설명 입력하기

명령 파일에 설명을 입력하는 방법에는 세 가지가 있습니다.


1. SQL*Plus REMARK 명령어 사용


2. SQL*Plus 설명 구분 문자인 /*...*/ 사용


3. ANSI/ISO (미국 규격 협회/국제 표준화 기구) 설명 기호인 -- 사용



이 중 하나의 방법으로 설명이라는 것을 표시하면 구문 분석이나 실행이 이루어지지 않습니다.

동일한 행의 세미콜론 뒤에 설명을 입력할 수 없습니다.


 

1. REMARK 명령어 사용


REMARK 명령어를 사용할 때는 REMARK 명령어를 입력한 행에 이어서 설명을 입력합니다. 같은 SQL 명령어의 행 사이에는 REMARK 명령어를 넣을 수 없습니다.



2. /*...*/ 사용


명령 파일에서는 별개의 행에, SQL 명령어에서는 동일한 행에, PL/SQL 블록에서는 한 행으로 입력합니다. 설명은 여러 행에 걸쳐 입력할 수 있지만 중첩될 수는 없습니다.



3. -- 사용


ANSI/ISO의 “--" 형식 설명을 사용할 수 있습니다. 종료 구분 문자가 없기 때문에 설명은 여러 행에 걸쳐 작성할 수 없습니다.





◆ 명령 파일 읽어 들이기


세션에서 SALES_2 파일을 읽어 들이려면 다음 GET 명령어를 입력합니다


파일에 SQL*Plus 명령어가 포함되지 않은 경우, RUN 명령어를 사용하여 실행할 수도 있습니다.


 

◆ 명령 파일 실행


START 명령어를 사용하면 명령 파일을 읽어 들이고 파일에 포함된 명령어를 실행할 수 있습니다. 명령어가 실행되고 파일의 SQL*Plus 명령어에 지정된 형식에 따라 질의 결과가 화면에 표시됩니다.



@(“at” 기호)를 사용하여 명령 파일을 실행하는 방법도 있습니다. 




SET 명령어의 ECHO 변수를 ON으로 설정하면 "입력되는" 명령어를 볼 수 있습니다. 

START, @ 및 @@ 명령어는 명령 파일의 마지막 SQL 명령어나 PL/SQL 블록을 버퍼에 남겨둡니다.


SQL*Plus를 시작하면서 명령 파일을 실행하려면 다음 네 가지 옵션 중 한 가지를 사용합니다.


1. SQLPLUS 명령어, 사용자 이름, 슬래시, 암호, 공백, @, 파일 이름 


명령 파일이 시작되고 실행됩니다.

SQLPLUS SCOTT/TIGER ©SALES



2. SQLPLUS 명령어, 사용자 이름, 공백, @, 파일 이름


암호를 묻는 프롬프트가 나오고 명령 파일이 시작되고 실행됩니다.

SQLPLUS SCOTT @SALES



3. 파일의 첫 행에 사용자 이름을 포함시키고 SQLPLUS 명령어, @, 파일 이름 순서로 입력 


암호를 묻는 프롬프트가 나오고 명령 파일이 시작되고 실행됩니다. 



4. 파일의 첫 행에 사용자 이름, 슬래시(/), 암호를 포함시키고 SQLPLUS 명령어, @ 및 파일 이름을 입력 


명령 파일이 시작 및 실행됩니다.



◆ 명령 파일 중첩


일련의 명령 파일을 순서대로 실행하려면 먼저 여러 개의 START 명령어를 포함하는 명령 파일을 작성합니다.

START SALES          

START SALES_2  

START SALES_3  

START SALES_4        



◆ 명령 파일 수정


기존 명령 파일은 다음 두 가지 방법으로 수정할 수 있습니다.


1. EDIT 명령어사용

2. SQL*Plus 편집 명령어인 GET과 SAVE 사용


확장자가 SQL인 PROFIT 파일을 편집하려면 다음 명령어를 입력합니다.


SQL*Plus 편집 명령어로는 먼저 GET을 사용하여 파일을 읽어 옵니다. 


SQL*Plus 편집 명령어를 사용하여 편집합니다.


SAVE 명령어를 사용하여 파일을 저장합니다.

기존 명령 파일 내용을 버퍼에 있는 명령어나 블록으로 대체하려면 다음 예와 같이 SAVE 명령어 다음에 파일 이름과 REPLACE를 입력해야 합니다.



기존 명령 파일 마지막에 버퍼 내용을 추가하려면 SAVE 명령어에 다음 파일 이름과 APPEND를 입력합니다.




◆ 반환 코드와 함께 명령 파일 종료


명령 파일이 호스트 운영 체제에서 일괄처리 파일로부터 실행되는 동안 명령 파일에서 SQL 오류가 발생하면, SQL*Plus 명령어의 WHENEVER SQLERROR 명령어를 사용하여 명령 파일 실행을 중지하고 반환 코드와 함께 종료할 수 있습니다.

운영 체제 오류가 발생하면 WHENEVER OSERROR 명령어를 사용합니다.



◆ SQL*Plus 환경 설정 


특정한 방식으로 SQL*Plus 환경을 설정한 다음 각 세션에서 재사용할 수 있습니다. 


SQL*Plus를 시작하면 자동으로 사용자 LOGIN 파일(사용자 지역 디렉토리부터 검색한 후 시스템 경로 검색)을 읽어 들여 해당 파일에 있는 명령어를 실행합니다. 또한 GLOGIN.SQL과 같은 사이트 프로파일도 사용할 수 있습니다.


다른 명령 파일처럼 사용자 LOGIN 파일도 수정할 수 있습니다. LOGIN 파일에 다음과 같은 명령어를 추가할 수 있습니다.


SET COMPATIBILITY : 뒤에 V7 또는 V8을 입력하여 사용자가 지정한 오라클 버전에 대한 호환성을 설정합니다.

SET NUMFQRMAT : 뒤에 숫자 형식(예를 들어, $99,999)을 입력 하여 질의 결과의 기본 숫자 형식을 설정합니다. 

SET PAGESIZE : 뒤에 숫자를 입력하여 페이지 당행 수를 설정합니다.

SET PAUSE : 뒤에 ON을 입력하면 각 페이지의 시작마다 일시 정지되며 Enter 키를 입력하면 다시 계속됩니다.


◆ SQL*Plus 시스템 변수 저장 및 복원


STORE 명령어를 사용하여 현재의 SQL*Plus 시스템 ("SET") 변수를 호스트 운영체제 시스템 파일에 저장할 수 있습니다. SET SUFFIX 명령어를 사용하여 기본 파일 확장자를 변경할 수 있습니다.



시스템 변수의 현재 값을 새로운 명령 파일 "plusenv.sql"에 저장하려면 다음을 입력합니다.


그런 다음 시스템 변수 값을 변경할 수 있습니다.

명령 파일로부터 시스템 변수의 원래 값을 복원하려면 다음을 입력합니다. 







다음 게시글에서 명령어 활용법2로 만나요!




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari