오라클 case문 사용법 오라클 case when 조건문에 대해서 알아볼게요. oracle case when 조건문은 우리가 많이 사용하는 if문과 같은 기능입니다. case when은 두가지 방법으로 사용됩니다. 마지막은 꼭 END를 넣어주셔야 합니다. 종종 실수하는 경우가 많습니다. 1. CASE 문 사용하기 WITH TEMP_TB AS ( select '사과' as product , '5' as qty from dual union all select '청소기' as product , '10' as qty from dual union all select '연필' as product , '15' as qty from dual ) select product , qty , CASE WHEN qty < 10..
LENGTH, LENGTHB 차이점 오라클에서 문자열에 대해 길이를 가져오는 함수중에 LENGTH, LENGTHB 가 대표적으로 있습니다. legnth 와 lenthb의 차이점을 알아보겠습니다. LENGTH(char) : 문자열 길이 반환하는 함수(공백포함) LENGTH는 순수한 문자열의 길이를 반환합니다. LENGTHB(char) : 문자열의 byte 반환하는 함수(공백포함) LENGTHB는 byte단위로 반환해주기 떄문에 한글이 포함되어있는 byte를 반환합니다 ※한글 바이트의 경우 DB 캐릭터셋의 방식에 따라 바이트의 수가 달라집니다. 사용하고 있는 DB의 캐릭터셋을 확인하는 방법은 아래쪽에 설명을 따로 하겠습니다. LENGTH, LENGTHB 예제 WITH TEST_TB AS ( select '가..
오라클 SYSDATE 사용법 안녕하세요. 오늘은 오라클의 날짜 함수인 SYSDATE 사용법에 대해 알아보겠습니다. 쿼리작성시 우리는 날짜를 조회조건에 걸어서 사용하는 경우가 많습니다. 기간검색을 할 경우에나, 특정날짜를 추출하는 경우도 있습니다. 프로그램 소스상에서 날짜를 입력받아서 사용할 수도 있습니다. 하지만 오라클에서 SYSDATE라는 날짜 함수를 제공하여서 쉽게 사용할 수 있습니다. 이 SYSDATE를 사용하여서 원하는 날짜를 컨트롤 하는 방법을 알려드릴게요. 1. 오늘 날짜 구하기 select SYSDATE FROM DUAL; 을 사용하여 현재 날짜를 조회 할 수 있습니다. -- 오늘 날짜 구하는 방법 select SYSDATE FROM DUAL; 2. 원하는 날짜 포맷으로 데이터 가져오기 TO..
오라클 문자열 자르는 방법 substr 개념 substr(문자열, 시작위치) substr(문자열, 시작위치, 길이) 사용법은 간단합니다. 자바에서는 substring과 같은 기능입니다. 오라클에서도 함수명이 비슷하네요. 1. 함수 인자로는 첫번쨰를 문자열과, 두번째는 시작위치, 세번째는 길이입니다. 2. 문자열에 들어갈수 있는 데이터 타입은 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB 입니다. 3. 시작위치와 길이에 입력되어야 하는 값은 데이터타입이 NUMBER 타입이거나 정수로 변환이 되는 문자열이여야 합니다. 아래 예제로 실제로 어떻게 사용되는지 확인해보겠습니다. 1. SUBSTR(문자열,시작위치) SELECT SUBSTR('안녕하세요ABC', 3) FROM DU..
오라클 ORA-01722 에러 해결 방법 ORA-01722: 수치가 부적합합니다 01722. 00000 - "invalid number" *Cause: The specified number was invalid. *Action: Specify a valid number. ora-01722 에러가 나는 이유는 데이터 타입이 일치 하지 않는 경우, 또는 데이터 타입이 다른 연산을 하는 경우 오류가 발생합니다. 예를들어서 설명할게요. USER_DATA라는 테이블이 있습니다. 컬럼명 타입 NULL 여부 ID VARCHAR2(10) No NAME VARCHAR2(10) No ADDRESS VARCHAR2(100) Yes USER_NUMBER NUMBER Yes 1. 데이터형이 일치하지 않는 경우 NUMBER 타입..
[ORACLE] 오라클 에러 모음 ORA-12400 ~ ORA-12699 오라클 에러 모음입니다. ctrl + F 로 찾으시면 좀더 쉽게 찾으실 수 있습니다. 시설 오류 처리에 대한 ORA-12400 유효하지 않은 인수 원인 : 설비 오류 처리 기능에 대한 인수가 최대 한계를 초과했거나 유효하지 않은 제품 / 시설을 참조했습니다. 조치 : 유효한 시설 오류 처리 매개 변수 값을 지정하십시오. ORA-12401 유효하지 않은 라벨 캐릭터 라인 : string 원인 : 정책이 레이블 문자열을 유효한 내부 레이블로 변환 할 수 없습니다. 조치 : 레이블 문자열의 구문을 정정하십시오. ORA-12402 무효 인 형식 캐릭터 라인 : string 원인 : 정책에서 형식 문자열을 지원하지 않습니다. 조치 : 형식 ..
[ORACLE] 오라클 에러 모음 ORA-07500 ~ ORA-09857 오라클 에러 모음입니다. ctrl + F 로 찾으시면 좀더 쉽게 찾으실 수 있습니다. ORA-07500 scglaa : $ cantim 예기치 않은 수익 원인 : VMS 시스템 서비스 $ CANTIM이 예기치 않은 값을 리턴했습니다. 조치 : 시스템 오류 메시지를 점검하고 VMS 문서를 참조하십시오. ORA-07501 scgtoa : $ deq 예기치 않은 리턴 원인 : VMS 시스템 서비스 $ DEQ가 예기치 않은 값을 리턴했습니다. 조치 : 시스템 오류 메시지를 점검하고 VMS 문서를 참조하십시오. ORA-07502 scgcmn : $ enq 예기치 않은 리턴 원인 : VMS 시스템 서비스 $ ENQ가 예기치 않은 값을 리턴했습..
[ORACLE] 오라클 에러 모음 ORA-12300 ~ ORA-12399 오라클 에러 모음입니다. ctrl + F 로 찾으시면 좀더 쉽게 찾으실 수 있습니다. ORA-12315 데이터베이스 링크 타입이 ALTER DATABASE 문에 유효하지 않습니다 원인 :ALTER DATABASE 명령문에 지정한 데이터베이스 링크 이름이 ROM : 링크가 아닙니다. ALTER DATABASE명령문을 사용하여 보조 데이터베이스를 마운트하거나 열 때 ROM : 링크를 지정해야 합니다. 조치 :ALTER DATABASE 마운트하거나 열려고하는 데이터베이스에 유효한 ROM : 링크를 사용 하여 명령문을 다시 발행하십시오 . 유효한 ROM : 링크가 없으면 CREATE DATABASE LINK명령문을 사용하여 작성하십시오. ..
오라클 Oracle 시퀀스(Sequence) 생성/수정/삭제/조회 방법 시스템을 운영하다보면 key값이 필요하게 되는 경우가 생깁니다. 소스단에서 key값을 계속 생성해서 DB에 INSERT하는방법도 있습니다. 하지만 만약 소스에 문제가 있다면 key값 생성을 잘못하여 key값 오류가 발생하는 경우도 생깁니다. Oracle에서 제공하는 편리한 방법이 있습니다. 시퀀스(SEQUENCE)는 숫자를 자동으로 생성하여 순차적으로 생성해주는 기능을 제공합니다. 그럼 시퀀스를 생성, 수정, 삭제, 조회 방법을 알아볼게요. 1. 오라클 시퀀스 문법 - docs.oracle 참조 2. 시퀀스 생성 방법 --문법 CREATE SEQUENCE [시퀀스 명] INCREMENT BY [증감숫자] -- 시퀀스 증가값.(기본값 ..
[ORACLE] 오라클 에러 모음 ORA-04100 ~ ORA-07499 오라클 에러 모음입니다. ctrl + F 로 찾으시면 좀더 쉽게 찾으실 수 있습니다 ORA-04930 오픈 순서 번호가 실패했거나 초기 상태가 유효합니다 원인 : Shared Sequence Number 운영 체제 구성 요소가 제대로 설치되지 않았거나 MC 하드웨어 오류가 발생했거나 이전 인스턴스가 올바르게 종료되지 않았습니다. 조치 : 운영 체제 명령 ps -ef |를 사용하여이 노드에있는 이전 인스턴스의 백그라운드 또는 포 그라운드 Oracle 프로세스가 없는지 확인하십시오 . grep instance_name. ipcs -b operating system 명령을 실행하여 Oracle 설치를 소유 한 사용자에게 공유 메모리 세그..
[ORACLE] 오라클 에러 모음 ORA-02100 ~ ORA-04099 오라클 에러 모음입니다. ctrl + F 로 찾으시면 좀더 쉽게 찾으실 수 있습니다. ORA-04930 오픈 순서 번호가 실패했거나 초기 상태가 유효합니다 원인 : Shared Sequence Number 운영 체제 구성 요소가 제대로 설치되지 않았거나 MC 하드웨어 오류가 발생했거나 이전 인스턴스가 올바르게 종료되지 않았습니다. 조치 : 운영 체제 명령 ps -ef |를 사용하여이 노드에있는 이전 인스턴스의 백그라운드 또는 포 그라운드 Oracle 프로세스가 없는지 확인하십시오 . grep instance_name. ipcs -b operating system 명령을 실행하여 Oracle 설치를 소유 한 사용자에게 공유 메모리 세..
오라클 전체 테이블, 컬럼, 코멘트 조회와 컬럼명으로 테이블을 찾아볼게요. 1. 현재 접속한 계정의 권한으로 접근할 수 있는 모든 테이블 목록 조회 SELECT * FROM all_all_tables; SELECT * FROM dba_tables; SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE'; 2. 현재 접속한 계정이 소유하고 있는 모든 테이블 목록 조회 SELECT * FROM tabs; SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'; SELECT * FROM USER_TABLES; 3. 전체 테이블 코멘트 조회 SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME =..
[ORACLE] 오라클 에러 모음 ORA-01500 ~ ORA-02099 날짜 / 시간을 가져 오는 데 ORA-01500 실패 원인 : CREATE DATABASE 또는 ALTER TABLESPACE 중에 날짜 및 시간을 가져 오는 데 실패했습니다. 조치 : Oracle 지원 서비스에 문의하십시오. ORA-01501 데이타베이스 작성에 실패했습니다 원인 : CREATE DATABASE 중에 에러가 발생했습니다. 조치 : 동반되는 오류를 참조하십시오. ORA-01502 인덱스 ' string . 문자열 '또는 해당 인덱스의 파티션이 사용할 수없는 상태입니다 원인 : 직접로드 또는 DDL 조작으로 사용할 수없는 것으로 표시된 인덱스 또는 인덱스 파티션에 액세스하려고했습니다. 조치 : 지정된 인덱스를 DROP..
[ORACLE] 오라클 에러 모음 ORA-02100 ~ ORA-04099 ORA-02100 PCC : 메모리 부족 (즉, 할당 할 수 없습니다) 원인 : SQLLIB가 프로그램을 실행하기에 충분한 메모리를 할당 할 수 없습니다. 조치 : 사용자 세션에 더 많은 메모리를 할당 한 후 프로그램을 다시 실행하십시오. 오류가 지속되면 Oracle 지원 서비스에 문의하십시오. ORA-02101 PCC : 커서 캐시 불일치 (uce / cuc 불일치) 원인 : 이 내부 오류는 일반적으로 메모리 관련 오류를 나타냅니다. 작업 : 잘못된 포인터 또는 배열 범위 위반과 같은 메모리 관련 오류가 있는지 프로그램을 확인하십시오. ORA-02102 PCC : 일치하지 않는 커서 캐시 (이 uce에 대한 cuc 항목이 없습니다..
[ORACLE] 오라클 에러 모음 ORA-00900 ~ ORA-01499 ORA-00900 유효하지 않은 SQL 문 원인 : 명령문이 유효한 SQL 문으로 인식되지 않습니다. 프로 시저 옵션이 설치되어 있지 않고이 옵션이 필요한 SQL 문 (예 : CREATE PROCEDURE 문)이 발행 된 경우이 오류가 발생할 수 있습니다. SQL * Plus를 시작하여 절차 옵션이 설치되어 있는지 확인할 수 있습니다. PL / SQL 배너가 표시되지 않으면 옵션이 설치되지 않은 것입니다. 조치 : 구문을 정정하거나 절차 옵션을 설치하십시오. ORA-00901 무효 인 CREATE 커멘드 원인 : CREATE 명령 뒤에 유효한 CREATE 옵션이 없습니다. 조치 : 구문을 정정하십시오. ORA-00902 유효하지 않..
[ORACLE] 오라클 에러 모음 ORA-00000 ~ ORA-00899 ORA-00000 정상, 성공적인 완료 원인 : 예외가 발생하지 않고 작업이 정상적으로 완료되었습니다. 조치 : 조치가 필요하지 않습니다. ORA-00001 고유 제한 조건 ( 문자열 . 문자열 위반) 원인 : UPDATE 또는 INSERT 문이 중복 키를 삽입하려고했습니다. 조치 : 고유 제한 사항을 제거하거나 키를 삽입하지 마십시오. ORA-00017 세션이 추적 이벤트를 설정하도록 요청했습니다. 원인 : 현재 세션이 다른 세션에 의해 추적 이벤트를 설정하도록 요청되었습니다. 조치 : 이것은 내부적으로 사용됩니다. 조치가 필요하지 않습니다. ORA-00018 최대 세션 수를 넘었습니다 원인 : 모든 세션 상태 개체가 사용 중입니..
[ORACLE] 오라클 ORA-12899 열에 대한 값이 너무 큼 해결 안녕하세요 오늘은 오라클 ORA-12899 에러해결을 해볼게요. ORA-12899 에러는 컬럼의 사이즈보다 더 큰 데이터가 입력, 수정이 되었을경우 에러가 발생합니다. 테스트로 아래 테이블을 만들어 보겠습니다. USER_DATA 테이블 안에 ID, NAME, ADDRESS varchar2타입으로 길이는 10으로 만들었습니다. create table USER_DATA( ID varchar2(10) NOT NULL, NAME varchar2(10) NOT NULL, ADDRESS varchar2(10) ); USER_DATA 테이블에 데이터를 INSERT 해볼게요. insert INTO USER_DATA (ID,NAME,ADDRESS) ..
[ORACLE] 오라클 ORA-01400: NULL을 ("USER_DATA"."ID") 안에 삽입할 수 없습니다. ### The error occurred while setting parameters ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: NULL을 ("USER_DATA"."ID") 안에 삽입할 수 없습니다 테이블에 NOT NULL이 잡혀있는경우 INSERT 나 UPDATE시 NOT NULL이 잡혀있는 컬럼에 NULL을 넣을시 에러가 발생합니다. -해결방법은 컬럼의 NOT NULL 체크를 해주시면됩니다. 아래는 위와같은 케이스를 발생시켜보겠습니다. create table..
[ORACLE] 오라클 ORA-00942: 테이블 또는 뷰가 존재하지 않습니다. org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다 SQL 에디터에서의 에러문구 : 00942. 00000 - "table or view does not exist" 오라클에서 종종나는 에러입니다. 첫번쨰 원인 실제로 테이블이나 뷰가 존재하지 않은 경우입니다. select, insert, update, delete 쿼리실행시 테이블이 없는경우! 해결방법 -> 테이블 또는 뷰명을 확인합니다. 두번쨰 원인 테이블에 ..
Oracle 에러 ORA-00001 org.springframework.dao.DuplicateKeyException: ### Errror updating database Cause: java.sql.SQLIntegrityConstraintViolatoinException: ORA-00001 : 무결성 제약조건(User.USER_PK)에 위배됩니다. DB 작업을 하다보면 종종 나는 오류입니다. 예제를 보여드리지요. 아래 테이블처럼 select col01, col02 From temp1018 COL01 컬럼이 PK 로 지정되어있습니다. COL01 값이 1019는 성춘향입니다. 아래와 같이 COL01 컬럼이 PK인데 아래와 같이 1019 값을 넣는경우 INSERT INTO temp1018(COL01,COL0..