SSMS -> DB2 변환시 참조사항 정리

HOHO·2023년 9월 12일
0

쿼리 성능 LANGUAGE SQL 밑에 SET OPTION ALWCPYDTA = *OPTIMIZE 추가


쿼리 트랜젝션 처리
LANGUAGE SQL 밑에 Set option commit = *RR 추가


쿼리
-> "SELECT * FROM SYSIBM.SYSTABLES FETCH FIRST 5 ROWS ONLY" 상위 5개


테이블 생성시 IDENTITY
-> "INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE )" 추가
IDENTITY 조회시 IDENTITY_VAL_LOCAL()


테이블에서 DATE형은 TIMESTAMP문으로 변경하고(DATE형은 날짜만, TIME형은 시간만 들어옴)
프로시져에서 VARCHAR(20)으로 받아서 INSERT로 넣어주면됨
BIZ에서 파라미터 넘길땐 Convert.ToDateTime(ht["날짜시간"]).ToString("yyyy-MM-dd hh:mm:ss");
형식으로 넣어주면됨(BIZ 파라미터 수정 필요함)


프로시저
구문의 끝은 ; 로 끝나야함


From 테이블 없이 조회시
SELECT '1' AS COLUMNS FROM SYSIBM.SYSDUMMY1;


조회 프로시져시 SELECT문 앞에
"DECLARE REFCURSOR CURSOR WITH RETURN FOR" 선언 후 SELECT
모든 커서문 사용 후 "OPEN REFCURSOR;" 호출 -> * REFCURSOR는 커서명


쿼리에서 변수 선언시
최상단에 DECLARE
SET문은 블록으로 감사줘야함 ( S1:BEGIN ~ END S1; )


SELECT구문이 여러개면
프로시져 시작점에 RESULT SETS 값에 호출할 SELECT문 갯수를 적어줌
-> "RESULT SETS 2" -> SELECT문이 2개
각 CURSOR문을 블록으로 감사줘야함 ( S1:BEGIN ~ END S1; )


동적 쿼리 예제
PTLOGBAS10L5 -> 쿼리 참조


동적 테이블 예제
함수 UF_GET_GRPEXTMEMBERS -> 쿼리 참조
DECLARE GLOBAL TEMPORARY TABLE SESSION.T
(
컬럼타입;
) WITH REPLACE; 로 선언


쿼리에서 변수선언 및 값설정 예제
PTLOGBAS10I1 -> 쿼리 참조


스키마에서 테이블정보조회
PTLOGBAS10C1 -> 쿼리 참조


문자열을 합칠땐 ||
LEN -> LENGTH
CONVERT -> CAST(데이터 AS 변환타입) * CAST(CURRENT DATE AS VARCHAR(10))
GETDATE() -> CURRENT DATE
CONVERT 날짜형 -> VARCHAR_FORMAT(CURRENT TIMESTAMP,'YYYY-MM-DD HH24:MI:SS')
DATEADD -> DATE + 1 DAY (Date에 하루 추가, DAY, MONTH, YEAR...)
ISNULL -> COALESCE(값,변환값)
IF문 -> IF THEN
--
ELSEIF
--
ELSE
--
END IF;


CASE문 -> CASE 조건
WHEN 값 THEN
--
WHEN 값 THEN
--
END;


INSERT문에는 컬럼명을 적어줘야함
WITH문에는 컬럼명을 적어줘야함


데이터 정렬순서에서 NULL은 가장 마지막에 위치함


MERGE문이 있으나
IF NOT EXISTS(조회조건) THEN
INSERT문
ELSE
UPDATE문
END IF;
로 변경(MERGE문 할줄모르겠네)


REPLACE 함수 사용관련 :
WITH 문 내 REPLACE 를 사용할 시 실행오류 발생 : TEMP 테이블에 결과셋 삽입후 REPLACE 실행
ROW_NUMBER 함수와 REPLACE를 같이 사용할 수 없음 : TEMP 데이블 이용


다국어 처리시
참조 : 테이블 = PTCMMBAS30, 프로시져 = PTCMMBAS30I1


함수
리턴되는 데이터가 테이블일시
TABLE(함수명(파라미터)) : ex-> SELECT * FROM TABLE(JISLIB.UF_GET_GRPEXTMEMBERS('9999')) A


MSSQL의 @@ROWCOUNT 역할과 동일한 기능 구현

////////////////////////////////////////////////
DECLARE update_counter INTEGER;

UPDATE gwscmLIB.TB_ABSENCE
SET ABRSN = ABRSN ;

GET DIAGNOSTICS update_counter = ROW_COUNT;
////////////////////////////////////////////////
profile
기계 그잡채가 되고싶다

0개의 댓글