C O N T E N T S 사용자 정의 오류 메시지 처리 용어 비교 디버깅용 파일 출력 명령 처리기 커서 처리 기본 아키텍처 프로세스 모델 메모리 모델 관련 파일 관련 디렉토리 메타 데이터 병렬 아키텍처 데이터 유형 비교 함수 비교 시스템 레지스터리 저장 프로시저 사용자 정의 함수 트리거 변수 선언 및 할당 Flow Control 문 Dynamic SQL 컨디션 핸들링 사용자 정의 오류 메시지 처리 디버깅용 파일 출력 커서 처리 커서 특성 확인하기 Collection Bulk Collect SP에서 Result Set 반환하기 다른 SP로 Result Set 반환하기 Local Function 계층적 쿼리 데이터 유형 자동 변환 Outer Join DECODE 문 반환되는 행의 개수 제한 값을 반환하는 INSERT, UPDATE, DELETE 문 Dummy Table Date, Time 연산 집합 연산자 OCI와 CLI 비교
용어 비교 Data dictionary, Datafiles, Data Blocks 등의 용어가 사용됩니다. System Catalog, Containers, Pages 등의 용어가 사용됩니다. ORACLE DB2 UDB
명령 처리기 sqlplus 를 이용합니다. DB2 CLP 를 이용하여, command와 SQL, 오류 message 등을 확인할 수 있습니다. ORACLE DB2 UDB
기본 아키텍처 ORACLE DB2 UDB
프로세스 모델 ORACLE DB2 UDB
메모리 모델 ORACLE DB2 UDB
관련 파일 ORACLE DB2 UDB
관련 디렉토리 ORACLE DB2 UDB
메타 데이터 SYSIBM SYSCAT SYSSTAT CHAR, VARCHAR2, LONG, NUMBER, DATE, LOB 등이 있습니다. CHAR, VARCHAR, SMALLINT, INT, BIGINT, DEC, FLOAT, DATE, TIME, TIMESTAMP, LOB 등이 있습니다. ORACLE DB2 UDB SYSIBM SYSCAT SYSSTAT
병렬 아키텍처 RAC DPF Shred Disk 구조를 사용합니다. Shared Nothing 구조를 사용하므로 확장성이 좋습니다. ORACLE DB2 UDB RAC DPF
데이터 유형 비교 CHAR, VARCHAR2, LONG, NUMBER, DATE, LOB 등이 있습니다. CHAR, VARCHAR, SMALLINT, INT, BIGINT, DEC, FLOAT, DATE, TIME, TIMESTAMP, LOB 등이 있습니다. ORACLE DB2 UDB
함수 비교 DB2가 지원하는 함수는 다음과 같습니다. ORACLE DB2 UDB ABS ACOS ASCII ASIN ATAN ATANH AVG BIGINT BLOB CEIL CHAR CHR CLOB CONCAT CORR COS COSH COT COUNT COUNT_BIG COVAR DATE DAY DAYNAME DAYOFWEEK DAYOFWEEK_ISO DAYOFYEAR DAYS DB_PARTITIONS DBCLOB DBPARTITIONNUM DEC DECRYPT_BIN DECRYPT_CHAR DEGREES DEREF DIFFERENCE DIGITS DLCOMMENT DLLINKTYPE DLNEWCOPY DLPREVIOUSCOPY DLREPLACECONTENT DLURLCOMPLETE DLURLCOMPLETEONLY DLURLCOMPLETEWRITE DLURLPATH DLURLPATHONLY DLURLPATHWRITE DLURLSCHEME DLURLSERVER DLVALUE DOUBLE ENCRYPT EVENT_MON_STATE EXP FLOAT FLOOR GENERATE_UNIQUE GET_ROUTINE_SAR GETHINT GRAPHIC GROUPING HASHEDVALUE HEALTH_CONT_HI HEALTH_CONT_HI_HIS HEALTH_CONT_INFO HEALTH_DB_HI HEALTH_DB_HI_HIS HEALTH_DB_INFO HEALTH_DBM_HI HEALTH_DBM_HI_HIS HEALTH_DBM_INFO HEALTH_TBS_HI HEALTH_TBS_HI_HIS HEALTH_TBS_INFO HEX HOUR IDENTITY_VAL_LOCAL INSERT INT JULIAN_DAY LCASE LOWER LEFT LENGTH LN LOCATE LOG LOG10 LONG_VARCHAR LONG_VARGRAPHIC LTRIM MAX MICROSECOND MIDNIGHT_SECONDS MIN MINUTE MOD MONTH MONTHNAME MQPUBLISH MQREAD MQREADALL MQREADALLCLOB MQREADCLOB MQRECEIVE MQRECEIVEALL MQRECEIVEALLCLOB MQRECEIVECLOB MQSEND MQSUBSCRIBE MQUNSUBSCRIBE MULTIPLY_ALT NULLIF POSSTR POWER PUT_ROUTINE_SAR QUARTER RADIANS RAISE_ERROR RAND REAL REC2XML REGR_AVGX REGR_AVGY REGR_COUNT REGR_ICPT REGR_R2 REGR_SLOPE REBIND_ROUTINE_PACKAGE REGR_SXX REGR_SXY REGR_SYY REPEAT REPLACE RIGHT ROUND RTRIM SECOND SIGN SIN SINH SMALLINT SNAPSHOT_AGENT SNAPSHOT_APPL SNAPSHOT_APPL_INFO SNAPSHOT_BP SNAPSHOT_CONTAINER SNAPSHOT_DATABASE SNAPSHOT_DBM SNAPSHOT_DYN_SQL SNAPSHOT_FCM SNAPSHOT_FCMNODE SNAPSHOT_FILEW SNAPSHOT_LOCK SNAPSHOT_LOCKWAIT SNAPSHOT_QUIESCERS SNAPSHOT_RANGES SNAPSHOT_STATEMENT SNAPSHOT_TBS_CFG SOUNDEX SPACE SQLCACHE_SNAPSHOT SQRT STDDEV SUBSTR SUM TABLE_NAME TABLE_SCHEMA TAN TANH TIME TIMESTAMP TIMESTAMP_FORMAT TIMESTAMP_ISO TIMESTAMPDIFF TO_CHAR TO_DATE TRANSLATE TRUNCATE 또는 TRUNC TYPE_ID TYPE_NAME TYPE_SCHEMA UCASE UCASE 또는 UPPER VALUE VARCHAR VARCHAR_FORMAT VARGRAPHIC VAR WEEK WEEK_ISO YEAR
시스템 레지스터리 Special Register Variables 를 이용하여 시스템에 관련된 여러가지 값을 확인할 수 있습니다. ORACLE DB2 UDB
저장 프로시저 CREATE OR REPLACE PROCEDURE 문을 이용하여 생성합니다. CREATE PROCEDURE 문을 이용하여 저장 프로시저를 생성합니다. REPLACE 옵션은 지원하지 않습니다. ORACLE DB2 UDB
사용자 정의 함수 CREATE OR REPLACE FUNCTION 문을 이용하여 생성합니다. CREATE FUNCTION 문을 이용하여 사용자 정의 함수를 생성합니다. REPLACE 옵션은 지원하지 않습니다. ORACLE DB2 UDB
트리거 CREATE OR REPLACE TRIGGER 문을 이용합니다. CREATE TRIGGER 문을 이용하여 트리거를 생성합니다. INSERT, UPDATE, DELETE 트리거는 개별적으로 생성됩니다. ORACLE DB2 UDB
변수 선언 및 할당 변수 이름, 유형, 기본값을 지정합니다. DECLARE 문을 이용하여 변수, 유형, 기본값을 지정합니다. SET 문을 이용하여 값을 할당합니다. ORACLE DB2 UDB
Flow Contol 문 IF, LOOP, WHILE, FOR 문 등을 이용합니다. IF, LOOP, WHILE, REPEAT, FOR 문 등을 이용합니다. ORACLE DB2 UDB
Dynamic SQL DBMS_SQL 팩키지 또는 NATIVE DYNAMIC SQL를 이용합니다. ORACLE DB2 UDB
컨디션 핸들링 EXCEPTION ~ WHEN 문을 이용합니다. DECLARE ~ CONDITION과 HANDLER 문을 이용합니다. ORACLE DB2 UDB
사용자 정의 오류 메시지 처리 RAISE_APPLICATION_ERROR 를 이용하여 사용자가 정의한 오류 메시지를 처리합니다. RAISE_ERROR, SIGNAL, GET DIAGNOSTICS 문을 이용하여 처리합니다. ORACLE DB2 UDB
디버깅용 파일 출력 CREATE PROCEDURE TESTCASE() LANGUAGE SQL BEGIN NOT ATOMIC dbms_out.put.put_line 함수를 이용합니다. PUT_LINE 사용자 정의 함수를 이용합니다. ORACLE DB2 UDB CREATE PROCEDURE TESTCASE() LANGUAGE SQL BEGIN NOT ATOMIC DECLARE V_DEPTNO SMALLINT; DECLARE V_DEPTNAME VARCHAR(20); DECLARE V_NUM SMALLINT DEFAULT 0; DECLARE V_MSG1 VARCHAR(4000); DECLARE V_MSG2 VARCHAR(1); SET V_NUM=2000; SET V_MSG1='debugging start'; VALUES(PUT_LINE(V_NUM,V_MSG1)) INTO V_MSG2; VALUES(PUT_LINE(SMALLINT(2),'this is no2')) INTO V_MSG2; VALUES(PUT_LINE(3)) INTO V_MSG2; VALUES(PUT_LINE('##number4##')) INTO V_MSG2; SET V_NUM = 0; FOR V_C1_REC AS C1 CURSOR FOR SELECT DEPTNUMB, DEPTNAME FROM ORG; DO SET V_DEPTNO = v_C1_REC.DEPTNUMB; SET V_DEPTNAME = v_C1_REC.DEPTNAME; SET V_NUM = V_NUM + 1; SET V_MSG1 ='DEPTNO=' || CHAR(V_DEPTNO)||','||V_DEPTNAME; END FOR; VALUES(PUT_LINE(32000,'end of the program')) INTO V_MSG2; END @
커서 처리 CURSOR~IS 문을 이용하여 선언합니다. DECLARE ~ CURSOR 문을 이용하여 선언합니다. OPEN, FETCH, CLOSE, WHERE CURRENT OF 구문은 유사합니다. ORACLE DB2 UDB
커서 특성 확인하기 %ISOPEN, %NOTFOUND, %FOUND, %ROWCOUNT 등을 이용하여 커서의 특성을 확인합니다. SQLCODE, SQLSTATE, GET DIAGNOSTICS 문을 이용합니다. ORACLE DB2 UDB
Collection nested table과 varrays 를 이용합니다. global temporary table을 이용합니다. 한 세션에서만 사용되며, 세션 종료시 자동적으로 소멸됩니다. ORACLE DB2 UDB
Bulk Collect BULK COLLECT 절을 이용하여 한 개 이상의 행을 FETCH합니다. TEMPORARY TABLE과 SELECT ~ INSERT 문을 이용합니다. ORACLE DB2 UDB
SP에서 Result Set 반환하기 반환 유형이 REF 인 커서를 이용하여 result set을 반환합니다. DYNAMIC RESULT SET 옵션을 이용하여 result set 을 반환합니다. ORACLE DB2 UDB
다른 SP로 Result Set 반환하기 nested table을 이용하여 result set을 다른 SP로 반환합니다. 반환된 result set 은 ASSOCIATE, ALLOCATE 문을 이용하여 처리합니다. ORACLE DB2 UDB
Local Function 특정 SP 내에서만 참조되는 함수를 local function 이라고 합니다. DB2 에서는 Local Function이 없으므로 UDF를 사용하기 전에 SP 외부에서 미리 생성해 두어야 합니다. ORACLE DB2 UDB
계층적 쿼리 CONNECT BY~START WITH 절을 이용합니다. SELECT 문에서 WITH로 정의되는 COMMON TABLE 을 이용합니다. ORACLE DB2 UDB
데이터 유형 자동 변환 필요시 자동적으로 데이터 유형의 변환이 발생합니다. 명시적인 데이터 타입이 맞지 않을 경우에는 조작을 허용하지 않습니다. 필요시, 명시적인 데이터 유형 변환 함수를 사용합니다. ORACLE DB2 UDB
Outer Join 플러스 (+) 기호를 이용하여 outer join 의 기준을 표시합니다. left, right, full outer join 구문을 이용합니다. ORACLE DB2 UDB
DECODE 문 여러가지 조건문을 판별할 때, DECODE 문을 사용합니다. CASE 문을 이용합니다. ORACLE DB2 UDB
반환되는 행의 개수 제한 ROWNUM을 이용하여 반환되는 행의 개수를 제한합니다. FETCH FIRST n ROWS ONLY 구문이나 ROW_NUMBER 함수를 이용합니다. ORACLE DB2 UDB
값을 반환하는 INSERT, UPDATE, DELETE문 RETURNING INTO 구문을 이용합니다. SELECT INTO과 FROM NEW TABLE 구문을 이용합니다. ORACLE DB2 UDB
Dummy Table DUAL 을 이용합니다. SYSIBM.SYSDUMMY1 을 이용합니다. ORACLE DB2 UDB
Date, Time 연산 DATE 유형을 이용하여, 날짜, 시간, 시간 소인을 처리합니다. DATE, TIME, TIMESTAMP 유형을 이용하여, 날짜, 시간, 시간 소인을 처리합니다. ORACLE DB2 UDB
집합 연산자 UNION, UNION ALL, MINUS, INTERSECT 를 지원합니다. UNION, UNION ALL, EXCEPT, EXCEPT ALL, INTERSECT, INTERSECT ALL 을 지원합니다. ORACLE DB2 UDB
OCI 와 CLI 비교 Oracle Call Interface 를 사용하여 C에서 데이터베이스를 액세스합니다. Call Level Interface 를 이용합니다. ORACLE DB2 UDB