본문 바로가기
반응형

DBMS/ORACLE70

[ORACLE] ORA-12704: 문자 집합이 일치하지 않습니다.(feat. UNISTR) ORA-12704: 문자 집합이 일치하지 않습니다.이 에러를 처음 접한 곳은 PL/SQL 즉 프로시저를 사용하면서 접하게된 에러이다. 실제로 발생한 에러 문구는 PL/SQL: ORA-12704: 문자 집합이 일치하지 않습니다 이런식의 내용이였다. 에러의 발생 과정은 개발 서버에서 사용중이던 프로시저를 수정하게 되어 수정사항을 그대로 운영서버에 적용하고 나서 생긴 오류였다. 개발서버에서는 잘 돌아갔는데 운영서버에서 에러가 발생한 이유가 무었일까 하던찰나 "문자 집합이 일치하지 않습니다." 라는 문구를 보고 해당 컬럼의 타입을 살펴보니 VARCHAR2 와 NVARCHAR2 로 개발서버와 운영서버의 타입이 차이가 있었다. 해결 방법은 찾아보니 간단했다. VARCHAR2 컬럼의 데이터를 가지고 NVARCHAR2.. 2020. 7. 28.
[ORACLE] 오라클_MERGE INTO (데이터 여부에 따라 UPDATE / INSERT 처리) - MERGE INTO ORACLE에서 제공하는 MERGE INTO 구문에 대해 알아보자. 테이블에 데이터가 이미 있으면 업데이트를 실행하고, 없을경우 값을 넣어줘야 하는 경우에 MERGE INTO 구문을 사용하지 않는다면, 1. 값이 있는지 확인 2. 있으면 UPDATE 3. 없으면 INSERT 이렇게 3개를 선언을 해줘야 한다. 오라클에서는 이런 작업을 한번에 처리를 할 수 있도록 도와주는 구문을 제공하는데 이게 바로 MERGE INTO 구문이다. 하나하나 자세히 알아가보도록 하자. ▷ [구문] MERGE INTO [TABLE / VIEW] - update 또는 insert할 테이블 혹은 뷰 USING [TABLE / VIEW / DUAL] - 비교할 대상 테이블 혹은 뷰 (위 테이블과 동일할 경우 .. 2020. 1. 8.
[ORACLE] 오라클_사용중인 오라클 버전 확인하기(SQL 쿼리문) - 오라클 버전 확인하기 - 쿼리문을 통해 현재 사용중인 오라클 버전이 무엇인지 확인하는 방법에 대해 알아보자. SELECT * FROM PRODUCT_COMPONENT_VERSION; ▷ 결과 SELECT * FROM v$version; ▷ 결과 위 두개의 쿼리문을 사용하면 결과 처럼 오라클의 버전, 서버 운영체제 및 버전 등을 확인할 수 있다. 하나하나 다 확인하기 귀찮다면 그냥 Oracle 관련한것만 뽑아서 쓰면 된다. SELECT * FROM v$version WHERE banner LIKE 'Oracle%'; 추가적으로 sqlplus 를 사용하여 버전을 확인하는 방법이 있어 기록해둔다.(출처 : 제타위키) 2019. 9. 17.
[ORACLE] 오라클_중복된 데이터 가져오기 업무를 하다보면 중복된 데이터를 찾는 상황이다 해당 중복된 데이터들이 필요한 순간이 온다 실제로 그런 순간이 와서 찾아본 결과 괜찮게 정리된 블로그가 있어 기록해둔다. 이제 중복된 데이터를 찾는 방법에 대해 알아보자 출처 : https://aljjabaegi.tistory.com/86 [알짜배기 프로그래머] 대한민국 법정동코드가 들어있는 CM_KIK_B 라는 테이블을 가지고 예를 들어보자 간단하게 중복된 데이터를 찾는 방법은 찾고자 하는 중복된 데이터 컬럼을 대상으로 GROUP BY 한 후에 HAVING 절로 COUNT가 1 이상인 것을 가져오면 된다. 그럼 전국적으로 중복되는 "동(KIKB_DONG_NM)" 을 찾아보도록 하자 SELECT T1.KIKB_DONG_NM, COUNT(*) FROM CM_K.. 2019. 8. 21.
[ORACLE] 오라클_데이터 엑셀로 추출하기/내보내기 (export) SQL Developer를 사용하다가 테이블의 데이터 혹은 특정 조건으로 뽑아낸 데이터를 엑셀 파일로 가져와야할 필요가 있는 상황이 닥친다. SQL Developer는 해당 데이터를 엑셀로 export해주는 기능이 있는데 한번 알아보도록 하자. 특정 조건을 만족하는 데이터들을 뽑고자 한다 조건을 입력해 출력된 데이터목록에 마우스 우클릭을하고[익스포트] 를 클릭해주자 그럼 아래와 같은 익스포트 마법사 라는 창이 뜨는데우선 형식을 excel 2003+ (xlsx) 로 변경해주도록 하자. 형식을 바꾸었다면 이제워크시트의 이름을 설정해주고파일을 내보낼 위치를 지정하고 다음을 눌러주도록 하자 익스포트 마법사 - 단계 2/2 로 넘어왔다면 해줄건 딱히 없다 완료를 눌러주자 이제 파일 추출한 경로를 따라 엑셀파일을 .. 2019. 8. 19.
[ORACLE] 오라클_WITH 구문 사용하기(feat.서브쿼리) WITH - WITH 구문은 보통 서브쿼리를 사용할때 많이 사용하고는 한다. (가독성과 성능면에서 우수하다.) - 일반 서브쿼리는 서로를 참조할 수 없지만 WITH절은 서로 참조가 가능하다. - 오라클 9버전 이상에서 지원하는 구문이다. - WITH 구문을 사용한 쿼리는 인라인뷰나 임시 테이블로 여긴다. 예제 1) WITH 구문의 일반적인 사용방법 -- 구문 -- WITH ALIAS명 AS (SUB 쿼리) -- SELECT 컬럼명 FROM ALIAS명; WITH TEST AS (SELECT a.deptno , b.emptno FORM a,b) SELECT * FROM TEST; 예제 2) WITH 구문 안에서 두개의 쿼리문 사용 -- 구문 -- WITH ALIAS명 AS (SUB 쿼리), -- ALIAS.. 2019. 8. 6.
[ORACLE]오라클_NULL 값 일때 치환 및 처리 (COALESCE) COALESCE - COALESCE(case1, case2, case3, ..., caseN) - COALESCE 함수는 나열된 값을 순차적으로 체크하여 NULL이 아닌 값이 나오는 인수를 반환한다. - 이 함수는 ANSI 표준 함수로 오라클뿐만 아니라 다른 DB언어에서도 사용이 가능하며 오라클에서의 NVL과 비슷한 기능으로 작동한다. COALESCE 함수에 대해 간략하게 알아봤으니 예제를 통해 접해보자. 우선 아래와 같은 데이터가 있다는 가정하에 진행해보자. ▷ 초기 데이터 deptno salary 10 20 0 30 10000 40 ▷ 쿼리문 SELECT deptno, salary, COALESCE( salary * 0.9 , -1) AS realSalary FROM dept; ▷ 결과 deptno .. 2019. 8. 4.
[ORACLE] ORA-00918: column ambiguously defined (컬럼 중복 에러) ORA-00918: column ambiguously defined (ORA-00918: 열의 정의가 모호합니다) 아주 흔하게 볼 수 있고 아주 가볍게 처리할 수 있는 에러이다. 에러의 원인은 간단하다 컬럼명이 중복되었을 경우에 생기는 에러이다. 그래서 보통 조인(join)문 이나 서브쿼리를 사용할때 자주 보이는 에러다. SELECT a.no , b.no , a.content , b.name , b.age FROM aTest a , bTest b WHERE a.no = b.no; 기본적인 조인문을 보면 위와같은경우 에러가 발생한다. a 테이블의 no 와 b 테이블의 no를 SELECT 했지만 셀렉트 했을 경우 둘 컬럼명 모두 no 이기 때문에 중복 에러가 발생하는 것이다. 해결 방법 역시 간단하다 해당 .. 2019. 7. 31.
[ORACLE]오라클_트리거(TRIGGER) 트리거(TRIGGER) - 트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때 마다 자동적으로 수행되는 사용자 정의 프로시저이다. - 트리거는 TABLE과는 별도로 DATABASE에 저장된다. - 트리거는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있다. - 트리거는 SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현하고,관련 테이블의 데이터를 일치시킬 때 주로 사용된다. - 제약조건과 함께 데이터 무결성을 지키는 하나의 방법으로써 특정 이벤트에 대해서 연속적으로 자동 동작하는 특수한 형태의 저장 프로시저라고 볼 수 있다. - 일반적으로 사용처는 많지만 예를 들어보자면 "입고"테이블에 새로운 제품이 들어왔을때 그 수량을 "재고"테이블에 .. 2019. 3. 31.
반응형
TOP