개발 등/ORACLE 23

ORA-01861: literal does not match format string

기존 쿼리 :ADD_MONTHS(NVL(TBBBM050.AGRE_UPD_DTM, '20010101'), 24) >= SYSDATE ADD_MONTH(DATE) 타입이 되어야 하는데, 들어온 데이터타입 유형이 다를 때 위의 에러가 난다.꼭 이 경우가 아니라 하더라도 스트링 포맷이 아닌 타입이 입력받아야 할 곳에 스트링타입이 들어오면 발생. 수정 후 쿼리 :ADD_MONTHS(NVL(TBBBM050.AGRE_UPD_DTM, TO_DATE('20010101','yyyymmdd')), 24) <= SYSDATE

개발 등/ORACLE 2012.04.06

[펌] OUTER JOIN

Outer Join (LEFT, RIGHT, FULL OUTER JOIN) Outer(외부) Join - Equi Join 문장들의 한 가지 제약점은 그것들이 조인을 생성하려 하는 두 개의 테이블의 두 개 컬럼에서 공통된 값이 없다면 테이블로부터 테이터를 반환하지 못하는 것이다. - 정상적으로 조인 조건을 만족하지 못하는 행들을 보기위해 Outer Join을 사용 한다. Outer Join 연산자는 "(+)" 이다. - 조인시킬 값이 없는 조인측에 "(+)"를 위치 시킨다. - Outer Join 연산자는 표현식의 한 편에만 올 수 있다. Outer Join 예제 -- 예제1) 일반 조인의 경우 SQL> SELECT DISTINCT(a.deptno), b.deptno FROM emp a, dept b W..

개발 등/ORACLE 2010.08.03

[펌] 오라클 계층구조(트리구조) : START WITH ~ CONNECT BY ~

=================================================================== [예] SELECT LEVEL AS LEV , MENU.* FROM TBL_MENU MENU WHERE MENU_TYPE_CD = '1' START WITH MENU.MENU_ID = 'TOP' CONNECT BY PRIOR MENU.MENU_ID = MENU.UP_MENU_ID ORDER SIBLINGS BY MENU_SEQ =================================================================== [풀이] UP_MENU_ID 가 'TOP'인 것부터 순환고리를 시작하며 동일 레벨일경우(즉, UP_MENU_ID 가 'TOP'으로 하는 여러..

개발 등/ORACLE 2010.07.29

java.sql.SQLException: ORA-01861: 문자열이 포맷 문자열에 맞지 않습니다

- 예문 INSERT INTO HOME_GEUNMU_T ( FROM_DT , TO_DT ) SELECT ENTER_YMD, RETI_YMD FROM ( SELECT ENTER_YMD, RETI_YMD FROM FUNCTION_PLACE_WORK A WHERE DELE_FLAG = 'N' AND MEMB_NUMB = '80008191' ORDER BY ENTER_YMD ) 위 쿼리문에서 조회한 빨간 색의 칼럼(varchar2 타입)과 인서트할 파란 색의 칼럼(date 타입) 데이터타입가 맞지 않아서 발생한다. 일반적인 날짜형식의 데이터일 때 즉 ('20091010') 같은 경우에서는 아무런 문제가 발생하지 않지만, '00000000'과 같은 날짜형식이 아닐 때 문제가 발생한다. 이때는 먼저 date 타입으..

개발 등/ORACLE 2009.12.25

[펌글] java.sql.SQLException: IO 예외 상황

## java.sql.SQLException: IO 예외 상황: Socket closed ==> 어떻게 해야될지..-.- ## java.sql.SQLException: ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다 Union 을 사용하는 경우에 컬럼의 type 이 같아야 한다. 아래 예에서 bnid 는 Number 이고, errorid 는 char 인 경우에 위와 같은 에러가 날 수 있다. ex) select name, bnid from table_a union select myname, errorid from table_a ## Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConne..

개발 등/ORACLE 2009.11.14

DECODE 함수

DECODE(expr, search1, result1, search2, result2, ... , default result) if expr = search1 이면 result1을 elsif expr=serarch2 이면 search2를, 아무것도 해당되지 않으면 default result를 조회 주의 : expr과 search의 데이터 타입이 같거나 형변환이 가능해야 한다. 형변환은 search 타입에 맞추어서 expr 의 테이터 타입이 변한다. select employee_id, first_name || ' ' || last_name names, decode(round((sysdate - hire_date)/365), 5, '5년 근속', 10, '10년 근속', round((sysdate-hire_..

개발 등/ORACLE 2009.04.21

JOIN

Nested Loop JOIN select a.F!,...,b.F1 from tab1 a, tab2 b where a.key1 = b.key2 and a.f1 = 'ab' and a.f2 ='10' - 순차적(부분범위처리가능) - 종속적(먼저치리되는 테이블의 처리범위에 따라 처리량 결정) - 랜덤(Random)액세스 위주 - 연결고리 상태에 따라 영향이 크다 - 주로 좁은 범위 처리에 유리 -싱글블럭Random IO가 많다. 다량데이터 조인할때 속도 저하 - 한쪽 인덱스를 안되게 만들면 다른쪽 인덱스를 무조건 사용한다. - OLTP시스템에서 사용 : 주문처리 쇼핑몰 등 데이터량이 작은것 - Driving Range가 좁을때 사용 Sort Merge JOIN select /*+ use_merge(a b) ..

개발 등/ORACLE 2009.03.31

인덱스(Index) 전략

결합인덱스 컬럼순서 결정 1. 항상 사용하는가? 2. 항상 '=' 로 사용되는가? 3. 분포도가 좋은 커럼 우선 4. sort 순서에 따라 5. 어떤컬럼을 추가하는가?(후보컬럼) where 납품일자 >= :v1 수렴하는 조건은 굉장히 좋은 조건이다 OLTP 확줄어드는게 앞에 나와야한다 조건이 하나나와도 인덱스역활을 할 수 있다 멍청한넘이 나오면 인덱스 안읽어야되는것도 읽게 된다 DW 소트를 대신하는 인덱스역활 인덱스 선정 절차 1. 해당 테이블의 액세스 유형 조사 2. 대상 컬럼의 선정 및 분포도 분석 3. 반복수행되는 액세스경로(Critical Access Path)의 해결 4. 클러스터링 검토 5. 인덱스 컬럼의 조합 및 순서의 결정 6. 시험생성 및 테스트 7. 수정이 필요한 애플리케이션 조사 및 ..

개발 등/ORACLE 2009.03.31