티스토리 뷰

Database/Oracle

Oracle & sqlplus

Jared 2009. 7. 2. 23:55
◈ & 기호 이용하기
    1. 첫번째 방법
    SELECT 'You '||Chr(38)||' Me' FROM DUAL;
    2. 두번째 방법
    SET DEFINE OFF
    SELECT 'You & me' FROM DUAL;

◈ 편집기 및 SQL*Plus 공통 설정 지정하기
$ORACLE_HOME/sqlplus/admin/glogin.sql에 SQL*Plus 실행시 항상 지정되는 전체 설정을 할 수 있다.
여기서 "ed" 명령으로 실행되는 에디터는 다음 처럼 지정할 수 있다.
    DEFINE_EDITOR=gvim.exe

◈ 프로시져 혹은 함수등의 소스 뽑아내기
    SET NEWPAGE 0
    SET TERMOUT OFF
    SET VERIFY OFF
    SET SPACE 0
    SET PAGESIZE 0
    SET FEEDBACK OFF
    SET HEADING OFF
    SET TRIMSPOOL ON
    SET LINESIZE 500
    SPOOL procedure_name.sql
    SELECT TEXT FROM USER_SOURCE WHERE NAME='프로시져혹은함수이름' ORDER BY LINE;
    SPOOL OFF

이렇게 저장된 procedure_name.sql 에서 불필요한 부분을 삭제하한다. 각 줄의 공백은 SET TRIMSPOOL ON 에 의해 제거된다.
VIM 공백 제거 : :%s/ *$//g
그리고 이렇게 생성된 소스 맨 앞에 CREATE OR REPLACE PROCEDURE 등을 붙여서 각 프로시져 등의 생성 스크립트로 사용할 수 있게 된다.

◈ 오류 내역 출력
    SHOW ERRORS
직전에 발생한 오류 내역 출력

◈ 숫자 출력 범위 늘리기
   SET NUM 15
숫자를 15자리까지 출력

◈ 쿼리 결과를 셸 스크립트로 자동 저장하기
    #!/bin/sh
    # 오늘 날짜를 셸 변수로 지정
    TODAY=`date +"%Y%m%d"`

    sqlplus username/password << ENDSQL
    -- 아래는 출력시 불필요한 형식 꾸미기가 안들어가게 한다.
    SET ECHO OFF
    SET NEWPAGE 0
    SET SPACE 0
    SET PAGESIZE 0
    SET FEEDBACK OFF
    SET HEADING OFF
    SET TRIMSPOOL ON

    SPOOL 저장할파일_${TODAY}_ORIG
    SELECT COL1 || '|' || COL2 || '|' || COL3 -- 실행할 쿼리
    FROM MYTABLE;
    SPOOL OFF
    QUIT
    ENDSQL

    # 처음과 마지막 쿼리 잔재 제거. 일단 스풀을 실행해보고나서 파일 위,아래에 추가되는
    # 불필요한 줄수를 알아본다. (여기서는 위에 2줄과 맨 아래 1줄)
    sed -e "1,2d" -e "$d" 저장할파일_${TODAY}_ORIG > 저장할파일_${TODAY}

    # 최종적으로 "저장할파일_${TODAY}"만 남겨둔다
    rm 저장할파일_${TODAY}_ORIG
위와 같은 내용으로 셸 스크립트를 만들면 SQL*Plus 로 쿼리 결과를 특정한 형식(여기서는 각 컬럼을 세로 바(|)로 나눈 형식)으로 뽑아낼 수 있다.
그리고 이 경우 셸 환경 변수 값을 TODAY 처럼 SQL 쿼리 문장에 삽입하는 것이 가능하다.

◈ 쿼리 수행 시간 알아내기
   SET TIMING ON
이렇게 설정하고 쿼리를 날리면 쿼리 수행시간도 함께 출력된다.

◈ DBMS_OUTPUT.* 으로 출력되는 양 조절
    SET SERVEROUTPUT ON SIZE 4000;
    Execute DBMS_OUTPUT.PUT_LINE(SYSDATE)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함