Database
-
간혹 한번에 여러 개의 데이터를 Insert 시켜야하는 경우가 있다.지금까지 많게는 2000개까지 Insert를 시킨 경험이 있는데 그런 경우 사용하는 방법이다. 다중 Insert를 할 때 오라클의 더미 테이블을 이용할 수 있는 방법이 있다.여러 데이터의 경우 시간이 걸리는 단점이 있긴하다. 자, A라는 테이블이 있다.A테이블에는 A_CD, AD_ID, SEQ_NO라는 컬럼이 존재한다.그리고 아래와 같은 자료를 삽입시켜야 한다. A_CD AD_ID SEQ_NO 1001 0000803930 1 1001 0000803930 2 1001 0000803930 3 10010000803930 4 100100008039305 1001 00008039306 1001 0000803930 7 1001 0000803930 ..
[Oracle]다중 INSERT 2018. 5. 24. -
ORA-01427 쿼리를 만들다보면 종종 마주치는 에러입니다. ORA-01427은 주로 서브쿼리에서 1건을 초과한 레코드가 나올 때 발생하는 에러입니다. 쿼리를 보면 이해가 빠를 것 같습니다. TESTDB라는 테이블이 있고 아래와 같이 데이터가 입력되어 있습니다. 자, 이제 에러가 나는 쿼리문을 보겠습니다. WITH TESTDB AS( SELECT '20123153' CODE, '이승현' CODENM, 'Y' USE_YN FROM DUAL UNION ALL SELECT '20156121' CODE, '박민서' CODENM, 'Y' USE_YN FROM DUAL UNION ALL SELECT '20143328' CODE, '최유진' CODENM, 'Y' USE_YN FROM DUAL UNION ALL SE..
[Oracle]ORA-01427 : 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다 2018. 5. 15. -
MONTHS_BETWEEN(SYSDATE, ColumnA) MONTHS_BETWEEN 함수는 월 단위로 날짜 연산을 하는 함수이다.SYSDATE(현재 날짜)를 기준으로 ColumnA(입력 날짜)와 몇 개월의 차이가 나는지를 구한다.아래 쿼리문을 통해 이해해보자.(ENTER_YMD : 입사일, ENTER_YMD2 : 개월 차이) SELECT EMP_ID , EMP_NM , ENTER_YMD , MONTHS_BETWEEN(SYSDATE, ENTER_YMD) AS ENTER_YMD2FROM A; 결과를 보면 소수점이 생기는 것을 확인할 수 있다. 개월 수를 나누어 년수로 바꾸고 TRUNC를 이용해 소수점을 깔끔하게 해주자.(반올림이 필요하다면 ROUND 처리를 해줘도 될 것 같다) SELECT EMP_ID ,..
[Oracle]MONTHS_BETWEEN 2018. 5. 15. -
오전에 프로그램을 하나 수정하면서 발견한 오류 ORA-01006검색 결과, Java에서 ? 에 값이 없거나 잘 못 들어가는 경우 생기는 오류라고 한다.. 디버깅 과정을 거쳐보니 xml에 주석을 달았던 것이 문제였다.지금 프로그램은 xml에서 바인드 변수(:)를 이용해 java단으로부터 특정 값들을 받아오고 있다.문제가 발생한 이유는 조건절을 주석으로 막아놔서 java단에서는 값이 넘어오는 데 그 값을 처리못해 생긴 오류였다. 아래는 문제의 조건절..(테이블명만 임의로 수정했다) WHERE A.조건='Y'AND B.조건 IN( SELECT 조건 FROM C WHERE C조건='Y' AND C조건 AND (C.조건=NVL(:값1, 값2) OR C.조건2=NVL(:값1, 값2)) ) 다음부터 조심하자. +피드..
[Oracle]ORA-01006 : 바인드 변수가 없습니다 2018. 5. 15. -
취업 후에 DB를 만지는 일이 더 많아진 것 같다.. Outer Join(외부조인) Outer Join은 Inner Join에 반대되는 개념이다.Inner Join은 조인 조건절을 만족하는 레코드만 출력을 시키지만 Outer Join은 조건절을 만족하지 않는 레코드도 출력을 시키며 조인되는 해당 컬럼의 값은 Null로 표시된다. 오라클에서 Outer Join을 사용하는 경우 흔히 (+)연산자를 사용한다. 이해를 확실히 하기 위해 간단한 쿼리를 만들어 테스트하였다. SELECT A.A, A.B, B.A, B.BFROM ( SELECT '1' A, 'TEST_A' B FROM DUAL UNION ALL SELECT '2' A, 'TEST_B' B FROM DUAL UNION ALL SELECT '3' A, ..
[Oracle]Outer Join(외부조인) 2018. 5. 2. -
쿼리를 만들다보면 은근히 많이 사용하면서도 또 자주 까먹는 함수... SELECT DECODE(A.TNAME, 'A', 'Correct!', 'Incorrect!')FROM ( SELECT 'A' TNAME FROM DUAL ) A A.TNAME : 컬럼명(기준값)'A' : 비교값'A'와 같다면 'Correct!''A'와 같지않다면 'Incorrect!' +업무 중에 현업에서 엑셀로 자료가 넘어오면 해당 자료에 DB를 수정해야 할 때가 있다.이 때 쿼리를 만들어 엑셀 자료와 DB자료를 동일하게 보기 위해 자주 쓰는 "ORDER BY DECODE" 까먹지 않기 위해 기록.. SELECT A.이름FROM ( SELECT '김철수' 이름 FROM DUAL UNION ALL SELECT '이영희' 이름 FROM..
[Oracle]DECODE 2018. 5. 1.