반응형

Linux Oracle dump 1분만에 백업 방법

 

오라클에 있는 데이터를 백업 받기 위해서는 oracle dump 를 사용하면 쉽게 백업을 받을 수 있는데

 

 

어떤 방법으로 dump 를 받는지 알아보도록 하겠습니다.

 

 

Linux Oracle dump 를 위해서는 터미널로 접속하여 오라클 계정으로 로그인을 해야 합니다.

 

 

로그인 후 아래 명령어를 실행합니다.

 

실행위치는 sqlplus 로 접속해서 하는 것이 아니고 오라클 설치폴더의 exp 파일을 실행하여 dump 를 받도록 처리합니다.

 

저는 oracle pass 를 지정해놓았기 때문에 바로 아래 명령어를 실행하도록 하겠습니다.

exp 아이디/패스워드@SID file=파일명.dump

 

 

아래 줄줄이 로그들이 표시되면서 실행한 경로에 dump 파일이 생성됩니다.

 

 

 

이 생성된 파일로 다른 db에 import 하면 됩니다~

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

프로젝트를 하고나면 산출물로 나오는 문서중에 테이블 정의서를 자주 만들고는 합니다.

 

 

테이블 정의서를 만들기 위해서 테이블을 하나하나씩 찾아가서

 

 

COLUMN 과 COMMENT 를 복사해서 엑셀 문서에 붙여넣기를 하곤 하는데

 

 

앞으로는 그렇게 하지 말기 위해서 SQL 문을 작성해두었습니다.

 

 

아래 SQL 을 가공하여 사용하면 더 쉬운 문서 한벌이 만들어 질 수 있으니 고효율이 아닐까요

 

 

 

SELECT T1.TABLE_NAME
     , T3.COMMENTS AS TABLE_COMMENTS
     , T1.COLUMN_NAME
     , T2.COMMENTS AS COLUMN_COMMENTS
     , CASE WHEN T1.DATA_TYPE IN ('LONG', 'CLOB', 'DATE') THEN DATA_TYPE
            WHEN T1.DATA_TYPE = 'VARCHAR2' THEN DATA_TYPE || '(' || DATA_LENGTH || ' BYTE)'
            WHEN T1.DATA_TYPE = 'NUMBER'   THEN DATA_TYPE || '(' || DATA_LENGTH || ' BYTE)'
            ELSE T1.DATA_TYPE
             END AS DATA_TYPE
  FROM ALL_TAB_COLUMNS T1
 INNER JOIN USER_COL_COMMENTS T2
    ON T1.TABLE_NAME = T2.TABLE_NAME
   AND T1.COLUMN_NAME = T2.COLUMN_NAME   
 INNER JOIN USER_TAB_COMMENTS T3
    ON T1.TABLE_NAME = T3.TABLE_NAME
 WHERE OWNER = 'SCOTT'
   AND T1.TABLE_NAME = 'EMP'
 ORDER BY T1.TABLE_NAME, T1.COLUMN_ID

 

 

 

 

위의 SQL 만 놓고 보면 특정 한 개의 테이블을 조회를 하는것으로 보이지만

 

조회조건에서 TABLE_NAME 을 제거한다면

 

특정 스키마에 존재하는 테이블의 COLUMN 과 COMMENT, 그리고 DATA_TYPE 까지 한번에 조회할 수 있습니다.

 

테이블 정의서에 맞게 해당 SQL 을 가공하여 사용하면 시간을 조금이나마 아낄 수 있게 됩니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

오라클 프로시저 내용 조회 ( sql stored procedure content search )

 

 

구축된 시스템의 프로시저와 함수를 살펴보면 수백개~수천개씩 되는 경우가 허다합니다.

 

 

내가 원하는 테이블이나 컬럼등 특정내용을 사용하는 프로시저나 함수를 찾고 싶은데

 

 

Procedure 나 Function 을 하나하나씩 다 열어볼 수도 없는 노릇이죠

 

 

오라클에서 제공하는 시스템 테이블이 있는데 이 테이블을 활용하면 내가 원하는 내용을 쉽게 찾을 수 있습니다.

 

 

SELECT T1.OBJECT_ID
     , T1.OBJECT_NAME
     , T1.OBJECT_TYPE
     , T2.TEXT
  FROM USER_OBJECTS T1
 INNER JOIN USER_SOURCE T2
    ON T1.OBJECT_NAME = T2.NAME
 WHERE T1.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION')
   AND T2.TEXT LIKE '%TEST_TABLE%'  /* 찾으려는 프로시저 또는 함수 내 문구 입력 */
  ;

 

 

TEXT 필드에 내가 원하는 내용을 검색하시면 됩니다!

 

 

잘 안되는 것이나 궁금한점이 있으면 같이 해결해나가도록 합시다^^

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

오라클 프로시저 파라미터 테이블에 사용

 

 

오라클 프로시저를 사용할 때 파라미터를 테이블에 사용하는 방법에 대해 알아보도록 하겠습니다.

 

 

그럼 일단 아래 예시 프로시저를 확인해볼까요!

 

 

CREATE OR REPLACE PROCEDURE PROC_TABLE_PARAM(p_TB_ID IN VARCHAR2, p_RET OUT VARCHAR2)
IS

/*----------------------------------------------------------------------------
    프로그램명: PROC_TABLE_PARAM 
    작성일 : 2020/08/25
    내  용 : 동적 테이블 파라메터를 이용하여 사용
------------------------------------------------------------------------------*/

    v_FILE_NM   VARCHAR2(100);
    v_ERR_MESG  VARCHAR2(4000);        
    v_RET       VARCHAR2(1000);
    v_SQL       VARCHAR2(1000);
    
BEGIN
    
    BEGIN

        BEGIN

              v_SQL := 'SELECT SUBSTR(FILE_ID, 1, INSTR(FILE_ID , '''||'.'||''',1)-1) AS FILE_ID FROM '|| p_TB_ID ||' WHERE ROWNUM = 1' ;
              EXECUTE IMMEDIATE v_SQL INTO v_FILE_NM ;

        END;

        BEGIN
          
                SELECT REGEXP_REPLACE ( TO_CHAR(WM_CONCAT(ERROR_MSG)), ',', ' | ') AS MSG
                  INTO v_ERR_MESG
                  FROM TEST_A T1
                ;
                
                
        END;
            
        BEGIN
           
            UPDATE TEST_B
            SET    ERR_CODE = p_ERR_TYPE
                 , ERR_MESG = v_ERR_MESG
            WHERE  FILE_ID = v_FILE_NM
            ;      
         END;  
         
         
         COMMIT;
            
    END;

    p_RET := 'OK';
        
EXCEPTION                                                                                          

    WHEN OTHERS THEN
        ROLLBACK;
        p_RET := 'ERROR';
  
END;



 

 

 

여기서 중요하게 봐야 할 부분만 딱 집어보겠습니다.

 

 

#1. 테이블명 파라메터 받기

CREATE OR REPLACE PROCEDURE PROC_TABLE_PARAM(p_TB_ID IN VARCHAR2, p_RET OUT VARCHAR2)

 

p_TB_ID IN VARCHAR2 는 파라메터를 외부에서 받을 수 있습니다.

 

 

테이블명을 외부 프로그램에서 받아오면 프로시져에서 사용할 수 있겠네요

 

 

#2. 테이블명 FROM 절에서 사용하기

v_SQL := 'SELECT SUBSTR(FILE_ID, 1, INSTR(FILE_ID , '''||'.'||''',1)-1) AS FILE_ID FROM '|| p_TB_ID ||' WHERE ROWNUM = 1' ; 
EXECUTE IMMEDIATE v_SQL INTO v_FILE_NM ;

 

 

SQL 문장을 변수에 담아서 문장을 만듭니다.

 

문장을 만들 땐 FROM 절에서 파라메터로 받아온 테이블을 파이프(||) 로 연결하여 사용하였습니다.

 

그리고 EXECUTE IMMEDIATE 처리 하여 SQL 을 실행하도록 처리하였습니다.

 

 

 

간단하게 다이나믹 SQL 을 사용할 수 있었습니다.

 

 

잘 안되거나 궁금한것이 있으면 댓글로 같이 연구해보겠습니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

ORACLE INSTR

 

 

ORACLE INSTR 함수는 간단한 함수이지만 자주 사용하는 함수가 아니어서

 

 

사용방법을 자주 찾아보는 함수이기도 해서 정리해두려고 합니다.

 

 

 

오라클 Database SQL Reference 사이트에서 INSTR 을 검색해보면 위와 같이 사용할 수 있는 방법을 제시합니다.

 

 

INSTR 은 INSTRB, INSTRC, INSTR2, INSTR4 함수와 동일한 방법으로 사용할 수 있다고 되어 있는데

 

 

사실 다른 것은 제쳐두고 INSTR 하나만 제대로 알아도 사용하는데 무리가 없습니다.

 

 

INSTR 주요 사용처

 

1. 문자타입의 데이터에서 특정 문자열의 위치 찾기

2. 특정 문자열부터 원하는 문자열까지 문자열 자르기 ( SUBSTR 활용 )

 

 

이 두가지를 주요 사용처로 씁니다.

 

 

INSTR 문법 사용

 

INSTR ( 문자열, 검색할 문자, 시작지점, n번째 검색단어 )

 

 

INSTR 사용 방법

 

 

SELECT INSTR('https://docs.oracle.com/', '/', 1, 1) AS TEST1
     , INSTR('https://docs.oracle.com/', '/', 1, 2) AS TEST2 
     , INSTR('https://docs.oracle.com/', '/', 1, 3) AS TEST3
     , INSTR('https://docs.oracle.com/', '/', 1, 4) AS TEST4
  FROM DUAL;

 

 

위 예시를 확인해 보면 'https://docs.oracle.com/' 문자에서 "/" 문자를 찾는 예시입니다.

 

문자열에서 / 가 총 3번이 들어가 있는데

 

4번째 parameter 를 활용하여 / 를 몇번째에 발견했는지를 찾아내는 parameter 입니다.

 

처음 발견했을 때는 7번째

두번째 발견했을 때는 8번째

세번째 발견했을 때는 24번째

네번째는 문자가 없으니 0 을 return 한 것을 알 수 있습니다.

 

 

한단계 더 활용을 하면 아래와 같이 할 수 있겠죠

 

 

SELECT SUBSTR('https://docs.oracle.com/'
            , INSTR('https://docs.oracle.com/', '/', 1, 2)+1
            , LENGTH('https://docs.oracle.com/')-1 - INSTR('https://docs.oracle.com/', '/', 1, 2)
            ) AS TEST5
  FROM DUAL;

도메인명을 알고 싶을 때 이렇게 / 의 자릿수를 찾아서 활용하듯

 

 

원하는 문자를 가공하여 사용하는데 많은 도움을 주는 함수가 INSTR 함수입니다.

 

 

작업을 하시다가 더 궁금한 점이 있으면 댓글로 같이 방법을 찾아봐요^^

 

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

ORACLE ROLLUP, CUBE 예제

 

 

오라클에서 ROLLUP 함수와 CUBE 함수는 그룹함수로 제공되고 있습니다.

 

GROUP BY 절에 사용할 수 있는데 각각 함수의 정의는 다음과 같습니다.

 

 

ROLLUP : 그룹핑 결과에 그룹지은 컬럼의 합계 정보를 추가 조회

CUBE : 그룹으로 지정한 모든 컬럼의 집계 정보를 조회

 

 

비슷한 함수로 사용되지만 결과는 조금 다를 수 있습니다.

 

 

어떻게 다른지 예제로 확인해보도록 하겠습니다.

 

 

#GROUP BY 

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY T1.JOB
        , T2.DNAME
        , T2.LOC

 

 

일반적인 GROUP BY 후 SUM 을 한 결과입니다.

 

 

JOB 과 DNAME 을 그룹핑 후 SAL 값의 합계를 조회한 것을 알 수 있습니다.

 

 

#ROLLUP

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY ROLLUP(T1.JOB, T2.DNAME, T2.LOC)

 

 

GROUP BY 절 안에 ROLLUP 함수를 사용하므로써

 

JOB, DNAME, LOC 별로 SALARY 의 소계값이 조회되고

 

가장 마지막에 JOB과 DNAME과 LOC 의 최종합계값, 즉 ROW DATA 의 전체합계가 조회된 것을 볼 수 있습니다.

 

 

 

 

#CUBE

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY CUBE(T1.JOB, T2.DNAME, T2.LOC)

 

CUBE 함수를 사용하면 ROLLUP 에서 사용했던

 

JOB, DNAME, LOC 별 소계값이 동일하게 조회되며

 

추가적으로 파란색 네모칸으로 조회되는 DNAME(부서)별 SALARY 의 합계값 까지 조회되는 것을 볼 수 있습니다.

 

CUBE 함수를 사용하면 GROUP BY 한 모든 항목에 대해서 집계값을 조회할 수 있는 것을 알 수 있네요

 

조회할 수 있는 모든 조합의 집계 정보를 보고 싶다면 CUBE 함수를 사용할 수 있습니다.

 

너무 많은 정보가 조회되어 데이터를 추출하는데 어려움이 있다면

 

조회조건을 추가하면 좀 더 간략한 정보를 볼 수 있으니 참고하시면 될 것 같습니다.

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 WHERE JOB = 'MANAGER'
 GROUP BY CUBE(T1.JOB, T2.DNAME, T2.LOC)

 

 

 

 

ROLLUP 과 CUBE 의 결정적인 차이점이라고 한다면

 

ROLLUP 은 ROLLUP 함수 안에 들어온 컬럼수 + 1 개의 결과가 조회되며

 

CUBE 는 CUBE 함수 안에 들어온 컬럼수의 2의 n 승개의 결과가 조회되는것이 가장 크다고 볼 수 있네요

 

제가 사용한 예제는 GROUP BY 는 3 + 1 = 3 , CUBE 는 2*2*2 = 8 개의 결과가 나오는 것을 확인할 수 있습니다.

 

ROLLUP 이나 CUBE 함수는 실제로 많이 사용하지는 않지만 이런 기능이 있다 정도로만 알고 있으면 될 것 같습니다.

 

읽어주셔서 감사합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

 

 

테이블 스페이스를 생성하던 도중 오류가 발생했습니다.

 

create tablespace TS_SAMPLE_REPORT
datafile '/data/oradata/COMPANY/TS_SAMPLE_REPORT.dbf'
size 10M
autoextend on next 10M
maxsize 100M
uniform size 10M

 

 

상세 오류의 내용은 아래와 같습니다.

 

명령의 29 행에서 시작하는 중 오류 발생 -
create tablespace TS_SAMPLE_REPORT
datafile '/data/oradata/COMPANY/TS_SAMPLE_REPORT.dbf'
size 10M
autoextend on next 10M
maxsize 100M
uniform size 10M
오류 보고 -
ORA-03214: 지정된 파일 크기가 기본 최소치보다 작습니다
03214. 00000 -  "File Size specified is smaller than minimum required"
*Cause:    File Size specified for add/resize datafile/tempfile does not
           allow for the minimum required of one allocation unit.
*Action:   Increase the specification for file size

 

기본 사이즈를 10MB 로 지정해주었는데

 

uniform size 를 동일하게 10MB 로 지정했기 때문에 발생한 오류입니다.

 

 

uniform size 는 확장되는 사이즈를 지정해주는것인데

 

 

전체 사이즈가 10mb 인데 10mb 씩 늘려가면 바로 용량초과가 발생하기 때문에

 

 

전체 사이즈보다 작게 설정해주어야 합니다.

 

 

전체 사이즈를 10mb 로 지정했다면 1mb 정도로 지정하면 오류가 나지는 않겠네요~

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

오라클 TO_DATE 1분만에 완벽마스터로 변신

 

 

 

 

 

 

 

TO_DATE 기본문법

 

오라클 TO_DATE 함수는 위와 같은 문법으로 사용할 수 있습니다.

 

 

 

SELECT TO_DATE('20200324', 'YYYYMMDDHH24MISS')
  FROM DUAL;

 

결과

 

 

 

 

가장 기본적으로 사용할 수 있는 TO_DATE 문법입니다.

 

1번째 Parameter : char ( vhachar2 ) 값을 입력합니다.

 

2번째 Parameter : 날짜 형식을 지정해줍니다.

 

 

날짜 형식

 

YYYY : 4자리 년도

 

MM : 2자리 월

 

DD : 2자리

 

HH24 : 24시간 단위 시간

 

MI : 분

 

SS : 초

 

 

TO_DATE 형식변경

 

TO_CHAR 함수와 함께 사용한다면 더욱 보기 좋게 만들어줄 수 있습니다.

 

 

SELECT TO_CHAR(TO_DATE('20200324', 'YYYYMMDDHH24MISS'), 'YYYY-MM-DD HH24:MI:SS') AS TO_DATE_형식1
     , TO_CHAR(TO_DATE('20200324', 'YYYYMMDDHH24MISS'), 'YYYY/MM/DD HH24:MI:SS') AS TO_DATE_형식2
     , TO_CHAR(TO_DATE('20200324', 'YYYYMMDDHH24MISS'), 'DD/MM/YYYY HH24:MI:SS') AS TO_DATE_형식3
  FROM DUAL;

 

결과

 

 

 

 

날짜함수 활용

 

TO_DATE 함수를 이용하면 전일, 전월 등 날짜 계산도 할 수 있습니다.

 

 

SELECT TO_DATE('20200324', 'YYYYMMDDHH24MISS')-1  AS "전일"
     , LAST_DAY(TO_DATE('20200324', 'YYYYMMDDHH24MISS')) AS "당월 마지막 일"
     , ADD_MONTHS(TO_DATE('20200324', 'YYYYMMDDHH24MISS'),-1) AS "전월"
     , TO_CHAR(ADD_MONTHS(TO_DATE('20200324', 'YYYYMMDD'),-1), 'YYYYMM')||'01' AS "전월1일"
     , ADD_MONTHS(TO_DATE('20200324', 'YYYYMMDDHH24MISS'),-12) AS "전년"
  FROM DUAL;

 

결과

 

 

 

 

 

이상으로 오라클 TO_DATE 함수에 대해 알아보았습니다.

 

궁금한 부분이 있다면 댓글 달아주세요^^

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

오라클 계정생성, 권한부여

 

 

안녕하세요?

 

오늘은 오라클 명령어 관련하여

 

계정생성하는 방법과

 

권한부여 하는 방법에 대해 알아보겠습니다.

 

자세히 확인하시고 테스트 한번씩 해보시면 금방 습득하실 수 있을것이라 예상합니다.

 


계정 생성하기

CREATE USER 유저ID IDENTIFIED BY "비밀번호";

 

 

계정 비밀번호 변경

ALTER USER "유저ID" IDENTIFIED BY "비밀번호";
 

 

 

계정 삭제

DROP USER "유저ID" CASCADE;
  


( CASCADE 명령어로 관련 SCHEMA 를 모두 삭제 가능합니다. )

 

 

모든 계정 조회

  SELECT * FROM ALL_USERS;

  SELECT * FROM DBA_USERS;
  

 

 

 

시스템 권한 리스트

CREATE USER : 데이터 베이스 유저 생성 권한

SELECT ANY TABLE : 모든 유저의 테이블 조회 권한

CREATE SESSION : 데이터베이스 접속 권한

CREATE TABLE : 테이블 생성 권한

CREATE VIEW : view 생성 권한

CREATE PROCEDURE USER : procedure, function, package 생성 권한

CREATE SEQUENCE  : sequence 생성 권한

SYSDBA : 데이터베이스 관리 최고 권한

SYSOPER : 데이터베이스 관리 권한

 
 
DML 권한 부여 및 권한 취소

GRANT  DELETE, INSERT, SELECT, UPDATE ON 테이블명 TO 유저ID;

REVOKE DELETE, INSERT, SELECT, UPDATE ON 테이블명 TO 유저ID;

 

권한부여 관련해서는 아래 포스팅 참고하시면 더 자세한 내용이 있습니다.

 

오라클 테이블 권한 부여 ( GRANT / REVOKE )

 

 

 

DBA 권한 부여

GRANT CONNECT, RESOURCE, DBA TO 유저ID;

 

 

 

 

 

이상으로 oracle 명령어 관련한 내용을 알아봤습니다.

 

 

한 주 잘 마무리 하시고 좋은 주말 보내세요^^

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

오라클 CASE WHEN 문법과 DECODE 문법의 예제를 알아보자

 

 

 

 

오늘은 오라클의 case 문과 decode 문에 대해서 포스팅을 해보려고 합니다.

 

case 문과 decode 문을 사용할 때는

 

일반적으로 프로그래밍을 할 때 if 문을 사용하는 것과 동일한 용도로 sql 에서 사용하겠죠?

 

 

아래는 오라클 공식 사이트에서 제공하는 

 

 CASE 와 DECODE 의 문법을 정리해놓은 그림입니다.

 

 

CASE 문법

 

 

 

DECODE 문법

 

 

 

 

딱 한눈에 봐도 CASE 문을 매우 복잡해 보이고

 

DECODE 는 간단해보이지 않나요??

 

 

그럼 사용방법을 알아보겠습니다.

 

 

 

 

CASE 문법

 

simple case expression 과 search case expression 으로 나뉘어져있지요?

 

 

simple case expression

 

SELECT cust_last_name

             , CASE credit_limit WHEN 100 THEN 'Low'

                                               WHEN 5000 THEN 'High'

                                               ELSE 'Medium'

                END

FROM customers;

 

 

 

credit_limit 가 100 이면 Low, 5000 이면 High , 이도저도 아니면 Medium 을 출력하는 문장입니다.

 

위처럼 credit_limit 를 기준으로 결과값을 도출해내는 것이 simple case expression 입니다.

 

 

search case expression

 

SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary ELSE 2000 END) "Average Salary"

  FROM employees e;

 

 

salary 가 2000 보다 크면 salary 값을 출력, 아니면 ( 2000보다 같거나 작으면 ) 2000 을 입력해서 평균 급여를 출력하는 문장입니다.

 

 

CASE 문 뒤에 특정필드를 기준으로 값을 비교해서 TRUE 값을 찾는것과

WHEN 절이 나온 후 기준필드의 특정값과 비교를 하느냐가 차이점입니다.

 

 

 

 

 

 

 

DECODE 문법

 

 

그렇다면 이번에는 위의 문장을 DECODE 문법으로 바꿔서 작성해볼까요?

 

SELECT cust_last_name

             , DECODE ( credit_limit, 100, 'Low', 5000, 'High', 'Medium' )

             , CASE credit_limit WHEN 100 THEN 'Low'

                                               WHEN 5000 THEN 'High'

                                               ELSE 'Medium'

                END

FROM customers;

DECODE 

 

 

 

좀 더 짧고 간단해졌죠?

 

편의상 사용하기 쉽고 가독성이 좋은것으로 사용하시면 될 것 같습니다.

 

 

 

 

이상으로 CASE 문법과 DECODE 문법의 사용법에 대해 알아보았습니다.

 

궁금한점이 있으면 답글 남겨주세요

 

감사합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형