오라클 MSSQL 컨버젼 작업을 정리 하며 > db

본문 바로가기
사이트 내 전체검색

db

오라클 MSSQL 컨버젼 작업을 정리 하며

페이지 정보

작성자 서방님 댓글 0건 조회 154회 작성일 08-12-22 18:58

본문

오라클 에서 MSsql로 컨버젼 작업을 진행 혹은 반대로 진행 하는 경우가 많다.
 
또한 오라클에서는 이렇게 썼는데 MSsql에서는 어떻게 쓰지? 이렇게 가끔 생각하는 경우가 있다.
 
몇가지 기억나는 순서대로 정리 해 보았다.

아래의 정리내역은 순수하게 기억나는 대로 정리하였기 때문에 실수도 있음을 인정해 달라..ㅋ
 
그래도 나도 가끔 이 정리한 내역을 보면서 유용하게 사용 하곤 한다.
 

항목

처리방식

Outer Join 수정

- 표준 outer join을 사용할 것.

   주의) 표준 outer joun 사용 시 상수의 outer join 주의

   예) FROM v_acl_user acluser, v_acl_dept acldept

        WHERE  acluser.deptid=acldept.deptid(+)

        AND     acldept.useyn ='Y'(+)

    
       => FROM v_acl_user acluser LEFT OUTER JOIN  
                     v_acl_dept acldept ON  acluser.deptid=acldept.deptid 
           AND  acldept.useyn ='Y' 임

        FROM v_acl_user acluser LEFT OUTER JOIN  
                     v_acl_dept acldept ON  acluser.deptid=acldept.deptid

        WHERE  acldept.useyn ='Y' 가 절대 아님

NVL 수정

- NVL => ISNULL

   주의) NVL( 변수, '') 인 경우는 ISNULL 에서 NULL 과 동일하게 인식하므로
             건별로 수정

   예) NVL(a.amount,0)
           => ISNULL(a.amount,0)

Convert 함수

- TO_NUMBER, TO_DATE,TO_CHAR 등의 함수
      => CAST 또는 CONVERT 로 변환

   예) 1) TO_NUMBER(x0.eval_totpoint)
           => CAST(x0.eval_totpoint AS NUMERIC(20,5))

         2) to_char(sysdate,'YYYYMMDD')
            => CONVERT(varchar(8),GETDATE(),112)

String 연결 함수

- || => +

    예) B.id LIKE (A.id || '%')
           => B.id LIKE (A.id + '%')

SUBSTRING 함수

- SUBSTR => SUBSTRING

    예) SUBSTR(up_deptid ,1 ,4)
           => SUBSTRING(up_deptid ,1 ,4)

         SUBSTR(a.nm,4)
           => SUBSTR(a.nm,4,len(a.nm))

상위 1 개 Select

- /*+ first_rows */ => TOP 문 으로 치환

rownum 수정

- TOP 으로 수정

    예) WHERE rownum = 1
            => SELECT TOP 1

- Select 바로 옆의 rownum 은 Cursor 이용함
   - Inline View 형식의 rownum은 dual 테이블 이용함

LENGTH/LENGTHB

- LENGTH => LEN

   예) LENGTH(up_deptid)
           => LEN(up_deptid)

 - LENGTHB => DATALENGTH

DECODE/Greatest/Least

 - CASE .. WHEN .. ELSE.. END 로 수정

   오라클은 8i(?) 부터 위의 문장이 되므로 오라클도 case사용

LPAD / RPAD

-REPLICATE 및 DATALENGTHB 이용하여 변경

  예) LPAD(to_char(w_seq_no), 4, '0')
         => REPLICATE('0', 4 - DATALENGTH(CONVERT(VARCHAR(4),@w_seq_no))) + CONVERT(VARCHAR(4),@w_seq_no)

        RPAD(' ',depth*3)
          => space(depth*3)

TRIM 함수

  예) TRIM(@v_apprepuserid)
          => RTRIM(LTRIM(@v_apprepuserid))

DATE 연산 함수

- ADDDATE 함수 사용

   예) sysdate + 1
          => ADDDATE(day,1,getdate()) 와 같은 형식으로 변경

INSTR 함수

- CHARINDEX  함수 사용

   예) INSTR(문자열a,문자열b)
          => CHARINDEX(문자열b,문자열a) 와 같이 변경됨

CHR(10)

 CHR(10) => CHAR(10), CHR => CHAR 로 변경

SF 수정 절차

1) varchar2 => varchar로

2) number => numeric

3) 변수 앞에 @ 붙이기 및 Declare 추가

   예제) aaa => @aaa

4) 변수 선언 시 Declare 추가

5) ";" 제외

6) Exception 부분의 no data found 부분 처리

7) IF 문 수정

8) 선언문 수정( :=  => SET 또는 SELECT)

9) INTO 문 없애기

  **기타) Query 문 수정

주의) 함수에서 GETDATE() 함수는 사용 불가

        #Temp table 사용 불가

        함수를 select 문에서 call 할 경우 반드시 owner 이름을 붙인다 => select dbo.sf_get('a'))

SP 수정 절차

* SF 와 거의 유사

Trigger 수정 절차

1) :old, :new 대신 select id from deleted OR select id from inserted 사용

2) SP Call 할 경우 sp_('a','a')=>exec sp_ 'a','a'

3) ON Table 명을 Trigger 명 바로 뒤에

    예제) CREATE TRIGGER tr_t_appline_insert ON t_appline

4) Before Trigger 가 안됨 => FOR 로 대치함

5) FOR EACH 인 경우 Cursor 를 이용하여 Loop 처리

6) old 와 new 를 같이 사용하는 UPDATE의 경우 PK 에 대한 수정은 없다고 가정

  * 나머지 문법적인 요소는 SP/SF 참조

SF 호출

- Store Function 호출 시 반드시 dbower.function 명으로 호출

   예) SELECT sf_appcontent_columnval('a','a')  
           FROM v_voter_d
          => SELECT dbo.sf_appcontent_columnval('a','a')  
              FROM  v_voter_d



다소 지저분하게 정리가 되었다. 위의 테이블은 ORACLE에서 MSSQL로의 CONVERSION 기준으로 정리 하였다.

댓글목록

등록된 댓글이 없습니다.

Total 464건 18 페이지
게시물 검색

회원로그인

접속자집계

오늘
138
어제
225
최대
1,347
전체
154,897
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.