본문 바로가기

Dev Story/DB

MS SQL->ORACLE 트리거 변환 방법 MS SQL 로 작성된 트리거를 오라클 트리거로 변환할 때 예시를 몇자 적어 볼가 한다. [MSSQL] ⓛ CREATE TRIGGER [T_EMP_MOVE_AFTER_DELETE] ON [EMP_MOVE] AFTER DELETE, UPDATE AS BEGIN DECLARE @OLD$EMP_NO DECIMAL(19,5), @OLD$DEPT_NO DECIMAL(19,5), @OLD$EMP_NAME NVARCHAR(2), ② DECLARE CUR CURSOR FOR SELECT EMP_NO , DEPT_NO, EMP_NAME, ③ FROM DELETED OPEN CUR FETCH NEXT FROM CUR INTO @OLD$EMP_NO, @OLD$DEPT_NO, @OLD$EMP_NAME WHILE @@FETCH..
실무에 사용 되는 오라클 커서 (CURSOR) 사용법 1) 정의 - 커서를 짧고 간략하게 설명 하면 "SQL문을 처리한 결과 집합을 가리키는 포인터이다." 이걸 약간 더 길게 설명 하면 SQL 처리 결과 를 오라클 서버 프로세스 내부의 Private SQL Area 라는 메모리 영역에 저장되는데 클라이언트 프로세스에서 포인터(커서)라 는 것이 가리키고 있다. 아래 두줄은 같은말 `` - 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치. - 커서는 SELECT 문의 결과 집합을 처리하는데 사용된다. 아래 그림은 위에 설명을 한 장의 이미지로 설명했다. 커서의 정의에 대해서 알아 보았으니 종류에 대해서 알아 보자. 종류로는 암시적, 명시적 커서로 나뉜다. 2) 암시적 커서 : 오라클 내부에서 PL_SQL(INSERT, UPDATE, DELETE 등등.)..
오라클 테이블 반환 (PIPELINED TABLE) 함수 작성법 오라클 에서 함수(Function) 를 작성하여 반환 값으로 보통 하나의 문자나 숫자 형태로 반환할 경우가 있지만 테이블 형태로도 반환 할 수 있다. 그 테이블 형태로 반환 하는 방법을 정리해 놓았다. 1. 레코드 타입 선언 - 함수에서 반환하는 레코드의 스키마를 정의 - FUNC_MULTIVALUES 함수명 정의 --레코드 타입 선언 CREATE OR REPLACE TYPE FUNC_MULTIVALUES AS OBJECT ( AUTH_NO VARCHAR2(10) ); 2. 테이블 타입 선언 - 함수에서 반환하는 레코드의 집합(테이블) 정의 - “T_” + 함수명 (명칭 정의 임의로 해도 상관은 없다.) --테이블 타입 선언 CREATE OR REPLACE TYPE T_FUNC_MULTIVALUES AS..
MSSQL -> Oracle 자주 사용 되는 날짜 시간 변환 편 개발로 먹고 살다 보면 종종 기존에 사용하던 DB를 변경 해야 하는 경우가 발생한다. 보통은 SQL을 직접 작성 한 경우가 많아서 변환되어야 할 DB에 맞게 수정을 해야 한다. 자바의 하이버네이트나 파이썬의 ORM 같은 서드파티를 사용하면 변환할 DB가 호환이 되서 돌아 가겠지만 우리의 "레거시 시스템" 들은 이런저런 이유로 인해 전통기술을 사용해야 한다. 요즘 드는 생각은 이런 일거리도 생겨야 누군가는 일을 더 하지 않겠는가... 예전에 Oracle -> MariaDB로 변환한 적이 있었는데 이번엔 MSSQL-> Oracle로 변환하는 프로젝트에 금방 익숙해졌던것 같다 하면서 정리해두었던 날짜, 시간 변환을 몇가지 기록 해둘가 한다. MSSQL Oracle 결과 CONVERT(CHAR(18), GETD..