2012. 7. 11. 17:10

1. Substitution Variable (치환변수)
   & : 변수가 한 번 사용되고 메모리에서 사라진다.
   && : 한 번 입력한 변수는 CLEAR하기 전까지 계속 메모리에 남아있다.
   
   DEFINE : 현재 DEFINE 된 모든 것들을 보여준다.
   DEFINE 변수명 : 지정한 변수명의 DEFINE 사항을 보여준다.
   UNDEFINE 변수명 : 지정한 변수명의 DEFINE 상태를 CLEAR한다.
   ACCEPT : 변수를 입력하라고 물어보는 Prompt의 Text를 변경할수 있다.
                  USER가 입력하는 값을 HIDE시킬수가 있다.
                  DataType의 Format을 변경할수가 있다.
   
2. & 치환변수 사용예
   
   SELECT empno, ename, sal, deptno
   FROM emp
   WHERE empno = &employee_num
   
3. && 치환변수 사용 예

   --> 한번만 물어보게 된다.   
   SELECT empno, ename, job, &&column_name
   FROM emp
   ORDER BY &column_name
   
4. 변수 값이 character or date value일때 꼭 single quotation mark로 묶어 줘야 한다.

   SELECT ename, deptno, sal*12
   FROM emp
   WHERE job = '&job_title'
   
5. 종합적인 예제

   --> 어떤 절에나 사용해도 된다.
   SELECT empno, ename, job, &column_name
   FROM emp
   WHERE &condition
   ORDER BY &order_column
   
6. ACCEPT 사용예 (file로 만들어서 START시켜야 한다.)

   ACCEPT dept PROMPT 'Provide the department name: '
   SELECT *
   FROM dept
   WHERE dname = UPPER('&dept')
   /
    
   Provide the department name: Sales
   
   처리된 결과값...

7. 파일로 만들어서 치환변수를 여러개 처리할때 예제

   test.sql
   SELECT &1 FROM &2
   
   SQL> @test empno emp
   
   ==> &1에 empno, &2에 emp가 들어간다.
   
8. SET command 변수
   ARRAYSIZE {20 | n} : 데이터 fatch size
   COLSEP {_ | text} : column seperator
   FEEDBACK {6 | n | OFF | ON}
   HEADING {OFF | ON} : column heading 출력
   LINESIZE {80 | n} : 가로 80 으로 출력
   PAGESIZE {50 | n} : 세로 50 으로 출력
   LONG {80 | n} : long date type의 데이터를 출력할때 80byte까지만 보여주겠다.
   PAUSE {OFF | ON | text} : text에 문자열을 넣으면 pause될때마다 메세지를 보여준다.
   TERMOUT {OFF | ON} : 결과를 화면에 보여주겠는가?
   VERIFY {OFF | ON} : 치환변수의 old값과 new값을 보여주면서 결과가 처리된다.
     
   * SHOW {SET command 명} : SET command명의 현재 상태를 보여준다. (예: SQL> SHOW ECHO)
   * SHOW ALL : 모든 SET command의 현재 상태를 보여준다.
   * SET 상태를 바꿔 주려면...

   SQL> SET PAUSE ON  <-- 이런식으로 하면 된다.
     
   * DEFINE command나 SET command는 자신의 환경파일(login.sql)에 일괄적으로 처리할수 있다.
   * glogin.sql은 oracle superuser용 환경파일이다.
   * SQL Plus command가 다음줄로 이어질때는 (-)으로 연결한다.
   
9. REPORT 출력 예제



 Fri Oct 24                       Page 1
                 Employee
                  Report

 Job
 Category      Employee           Salary
 ------------- ------------- -----------
 CLERK         ADAMS           $1,100.00
 CLERK         JAMES             $950.00
 CLERK         MILLER          $1,300.00
 CLERK         SMITH             $800.00
 MANAGER       BLAKE           $2,850.00
 MANAGER       CLARK           $2,450.00
 MANAGER       JONES           $2,975.00
 SALESMAN      ALLEN           $1,600.00
 SALESMAN      MARTIN          $1,250.00
 SALESMAN      TURNER          $1,500.00
 SALESMAN      WARD            $1,250.00
 
 
               Confidential


   SET PAGESIZE 37 --> 세로 37로 출력
   SET LINESIZE 60 --> 가로 60으로 출력
   SET FEEDBACK OFF
   TTITLE 'Employee|Report' --> Top Title을 Employee 다음줄에 Report를 쓰겠다.
   BTITLE 'Confidential'    --> Bottom Title을 Confidential로 쓰겠다.
   COLUMN job HEADING 'Job|Category' FORMAT A15   
      --> job column Heading을 Job 다음줄에 Category로 쓰고 15byte의 자리수로 만들겠다.
   COLUMN ename HEADING 'Employee' FORMAT A15     
      --> ename column Heading을 Employee로 쓰고 15byte의 자리수로 만들겠다.
   COLUMN sal HEADING 'Salary' FORMAT $99,999.99  
      --> sal column Heading을 Salary로 쓰고 Format을 $99,999.99로 만들겠다.
   REM ** Insert SELECT statement  --> 주석문
   SELECT job, ename, sal
   FROM emp
   WHERE sal < 3000
   ORDER BY job, ename
      
   * | : text를 두줄로 찍는다.
   * REM : 주석문

Posted by 몰라욧