[Oracle | 오라클] ORA-00938: 함수의 인수가 충분하지 않습니다. / not enough arguments for function
·
Database/Oracle
ORA-00938: 함수의 인수가 충분하지 않습니다."not enough arguments for function" 이 오류는 쿼리를 작성해 본 실무자나 학부생이라면 누구든 한 번은 무조건 봤을만한 문구이다. 바로 함수의 인수가 충분하지 않다는 것인데, 오라클에서 제공하는 함수나 사용자가 만든 함수, 프로시저 등을 사용할 때 발생하는 오류이다. 그럼 'ORA-00938: 함수의 인수가 충분하지 않습니다.' 라는 오류는 언제 발생하는지 아래의 예시를 확인해 보자.SELECT TO_CHAR()FROM DUAL;위의 쿼리를 실행할 경우 'ORA-00938: 함수의 인수가 충분하지 않습니다' 오류가 출력된다. 익히 아는 TO_CHAR 라는 오라클 함수가 존재하는데, TO_CHAR 함수를 실행할 때 어떤 데이터를..
[Oracle | 오라클] ORA-00918: 열의 정의가 애매합니다. / column ambiguously defined
·
Database/Oracle
ORA-00918: 열의 정의가 애매합니다."column ambiguously defined" 이 오류는 쿼리를 작성해 본 실무자나 학부생이라면 누구든 한 번은 무조건 봤을만한 문구이다.바로 열의 정의가 애매(모호)하다는 것인데, 컬럼명이 중복돼 있을 때 오류를 출력한다.주로 조인(JOIN)이나 서브쿼리를 작성할 때 자주 보이는 오류이다. 그럼 'ORA-00918: 열의 정의가 애매합니다.' 라는 오류는 언제 발생하는지 아래의 예시를 확인해 보자.-- 코드를 입력하세요SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(A.REVIEW_SCORE), 2) AS SCOREFROM (SELECT INFO.REST_ID, ..
[Oracle | 오라클] ORA-01502 : 인덱스 'INDEX명'또는 인덱스 분할영역은 사용할 수 없은(없는) 상태입니다 오류 해결
·
Database/Oracle
ORA-01502: 인덱스 '인덱스명'또는 인덱스 분할영역은 사용할 수 없은 상태입니다 평상시엔 정상적으로 작동하던 insert Query가 갑자기 ORA-01502 오류를 출력하며 작동을 하지 않았다. 원인은 확인해봐야겠지만 간단히 말하면 사용 중이던 인덱스가 사용할 수 없는 상태가 되었기 때문에 출력되는데 아무것도 모르고 처음부터 해결하려고 하면 막막하게 느껴질 수 있으나 사실 매우 간단하게 해결이 가능하다. ALTER INDEX 인덱스명 REBUILD; 를 작성하고 실행 시키니 라는 메시지가 출력되었고, 다시 저장 로직을 실행시키니 정상적으로 작동했다.
[Oracle | 오라클] ORA-00904 : 부적합한 식별자 오류
·
Database/Oracle
ORA-01756: "X": 부적합한 식별자 "%s: invalid identifier" ※ 이 오류는 문자가 들어가는 모든 쿼리문에서 확인할 수 있다. 쿼리를 작성해서 데이터를 조회할 때 보통 WHERE 절을 필수로 사용하는데, 이때 발생하는 오류이다. 아래의 예시를 보면 단번에 이해할 수 있다! SELECT USER_ID, USER_NM FROM TB_USER WHERE USER_NM = 김헌일 위의 쿼리를 보면 '김헌일'이라는 이름을 가진 유저를 모두 조회하도록 작성하였는데 WHERE 절에 ' 문자가 빠져서 발생하는 오류이다. 해결방법은 아래와 같이, 데이터베이스가 조건을 정확하게 인식할 수 있게 ' 문자를 넣어주고, 쿼리를 실행하면 된다. SELECT USER_ID, USER_NM FROM TB_..
[Oracle | 오라클] ORA-01756 : 단일 인용부를 지정해 주십시오 오류
·
Database/Oracle
ORA-01756: 단일 인용부를 지정해 주십시오 "quoted string not properly terminated" ※ 이 오류는 데이터 조회 시 확인할 수 있다. 쿼리를 작성해서 데이터를 조회할 때 보통 WHERE 절을 필수로 사용하는데, 이때 발생하는 오류이다. 아래의 예시를 보면 단번에 이해할 수 있다! SELECT * FROM TB_USER WHERE USER_NM IN ('김헌일); 따로 설명할 것도 없는데... 해당 쿼리의 USER_NM 조건에 문자열을 닫아주는 ' 가 빠져있어 ORA-01756 오류가 발생한다. 해결 방법은 SELECT * FROM TB_USER WHERE USER_NM IN ('김헌일'); 당연하게도 ' 를 입력해서 열린 문자열을 닫아주면 된다. 끗!
[Oracle | 오라클] ORA-00979 : GROUP BY 표현식이 아닙니다.
·
Database/Oracle
ORA-00979: GROUP BY 표현식이 아닙니다. "not a GROUP BY expression" ※ 이 오류는 데이터 조회 시 자주 확인할 수 있다. 지금 내가 일하고 있는 이곳은 통계 값 요청이 상당히 많다. ~~자격증을 소지하고 있는 자는 몇 명인지, ~~상태값이 Y인 아이디는 몇 개인지, N인 아이디는 몇 개인지 등 위와 같이 통계 값을 요청했을 때 자주 사용하는 것이 GROUP BY 이다. 쉽게 예를 들자면, 1번, 2번 자격증이 있다고 가정하고, 요청자가 1번 자격증을 소지하고 있는 사람의 수, 2번 자격증을 가지고 있는 사람의 수를 뽑아주세요!라고 할 때 이 GROUP BY 를 사용하면 쉽게 구할 수 있다는 것이다! 그럼 GROUP BY 표현식이 아닙니다. 라는 오류는 언제 발생하는지..
[Oracle | 오라클] ORA-01858 : 숫자가 있어야 하는 위치에서 숫자가 아닌 문자가 발견되었습니다. 오류
·
Database/Oracle
ORA-01858: 숫자가 있어야 하는 위치에서 숫자가 아닌 문자가 발견되었습니다. "a non-numeric character was found where a numeric was expected" ※ 데이터 조회 시 날짜 관련 함수(TO_CHAR, TO_DATE 등)를 사용할 때 자주 발생하는 오류이다. 아래의 예시에 있는 질의문을 실행시켜보면, SELECT TO_DATE(SYSDATE, 'yyyymmdd') FROM DUAL; 'ORA-01858 : 숫자가 있어야 하는 위치에서 숫자가 아닌 문자가 발견되었습니다.' 오류가 출력된다. 어떻게 보면 다른 애매모호한 오류 메시지보다 훨씬 직관적이라서 헤맬 필요 없이 쿼리를 수정이 가능하다. 오류가 발생하는 원인은 TO_DATE 함수는 숫자를 문자로 변환해..
[Oracle | 오라클] ORA-01722 : 수치가 부적합합니다 오류
·
Database/Oracle
ORA-01722: 수치가 부적합합니다 해당 오류는 데이터를 삽입, 수정 시 확인할 수 있다. 간단하게 설명하자면 컬럼의 DATATYPE이 NUMBER인데, 해당 컬럼에 문자를 입력하게 되면 ORA-01722 오류가 발생한다. 위의 오류는 당연하게도 NUMBER 타입의 컬럼에만 국한되지 않고 다른 데이터 타입의 경우도 마찬가지이다. 아래는 예시이다. -- ORA-01722 오류 발생 -- USER_TEL 컬럼의 DATATYPE은 NUMBER라고 가정한다. INSERT INTO TB_USER ( USER_NO, USER_ID, USER_TEL ) VALUES ( '0001', 'kimheon1' '아메리카노' ); USER_TEL 컬럼의 데이터 타입이 NUMBER인데 해당 컬럼에 '아메리카노' 라는 문구를..
[Oracle | 오라클] ORA-12899 : 열에 대한 값이 너무 큼 오류
·
Database/Oracle
ORA-12899 : 열에 대한 값이 너무 큼 "value too large for column" 데이터 삽입, 업데이트 시 많이 마주치는 오류이다. 위 오류는 컬럼에 설정되어 있는 데이터 허용치보다 더 큰 값을 삽입, 업데이트 하는 경우 발생한다. 쉽게 예시를 들어보면, DEL_YN 이라는 컬럼에 데이터 타입이 VARCHAR2(1 BYTE)라고 가정했을 때 입력할 수 있는 값은 알파벳 하나일 것이다. 그런데 이 컬럼에 한글을 넣는다던지, 더 많은 알파벳, 숫자 등 설정한 BYTE보다 더 큰 값을 입력하는 경우 ORA-12899 오류가 출력될 것이다. -- INSERT 과정에서 ORA-12899 오류 발생 -- DEL_YN 컬럼의 DATETYPE이 VARCHAR2(1 BYTE) 라고 가정함 INSERT ..
[Oracle | 오라클] ORA-01400 : NULL을 (~) 안에 삽입할 수 없습니다. 오류
·
Database/Oracle
ORA-01400 : NULL을 (~) 안에 삽입할 수 없습니다 해당 오류는 INSERT 구문을 작성하다 보면 확인할 수 있다. 오류 메시지에 친절하게 NULL을 '테이블.컬럼명' 에 삽입할 수 없다고 하는데, 풀어서 얘기하면 ORA-01400 오류는 테이블에 NULLABLE이 'No'인 컬럼이 있는데 해당 컬럼에 데이터를 넣지 않고 INSERT를 시도하는 경우 발생한다. -- INSERT 과정에서 ORA-01400 오류 발생 -- 해당 테이블의 USER_NO 컬럼은 NULLABLE 값이 'No' 라고 가정한다. INSERT INTO TB_USER ( USER_NM ) VALUES ( '김헌일' ) 위의 쿼리문은 겉으로 봐서는 문제가 없어 보이지만, USER_NO 컬럼의 NULLABLE 값이 No일 경우..
[Oracle | 오라클] ORA-00913 : 값의 수가 너무 많습니다 오류
·
Database/Oracle
ORA-00913 : 값의 수가 너무 많습니다 "too many values" 데이터 확인을 위해 SQL 질의문을 작성하다 보면 가끔씩 마주치는 오류이다. + 해당 오류는 INSERT 과정에서도 발생한다. -- SELECT 과정에서 ORA-00913 오류 발생 SELECT * FROM TB_USER WHERE USER_NO = ( SELECT USER_NO, USER_NM FROM TB_USER WHERE USER_NO = ? ) -------------------------- -- INSERT 과정에서 ORA-00913 오류 발생 INSERT INTO TB_USER ( USER_NO, USER_NM ) VALUES ( 'ID000001', '김헌일', 'kimheonil' ) 해당 오류가 나는 이유는 ..
[Oracle | 오라클] ORA-01427 : 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 오류
·
Database/Oracle
ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. "single-row subquery returns more than one row" 데이터 확인을 위해 SQL 질의문을 작성하다 보면 가끔씩 마주치는 오류이다. -- ORA-01427 오류 발생 SELECT * FROM TB_USER WHERE USER_NO = ( SELECT USER_NO FROM TB_USER ) 조건문에 들어간 서브쿼리가 하나 이상의 결과값을 뱉어내면 위와 같은 오류 메시지가 출력되는데 해결 방법은 간단하다. 1. equlas(=) 로 검색하려는 조건을 'IN'으로 수정하기 2. 하나의 결과만 정확하게 출력할 수 있도록 서브쿼리 수정하기 아래는 예시이다! -- 1번 SELECT * FROM TB_USER ..
[Oracle] 오라클 테이블 정보 및 컬럼 정보 조회 쿼리
·
Database/Oracle
-- 테이블 정보 SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'TABLE_NAME'; -- 테이블 코멘트 SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = 'TABLE_NAME'; -- 테이블 인덱스 정보 SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'TABLE_NAME'; -- 컬럼 코멘트 전체 조회 SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = 'TABLE_NAME'; -- 컬럼 정보 조회 SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TABLE_NAME'; 아아~주 요긴하게 사용할 수 있는 쿼리입니다. 일일..
[Oracle] 자바에서 오라클을 사용하기 위한 JDBC
·
Database/Oracle
JDBC, Java DataBase Connectivity 자바에서 데이터베이스에 접속/관리할 수 있게 해주는 드라이버(API) 자바로 작성된 프로그램으로 DB와 관련된 작업을 처리할 수 있도록 제공되는 기능(코드)들을 모아놓은 것 OJDBC - Oracle 에서 제공하는 오라클 DB를 관리할 수 있도록 도와주는 JDBC이다. OJDBC & Oracle 버전 OJDBC6 - JDK 6 이상 - 오라클 11gR2 -- 나는 이것을 사용한다. OJDBC5 - JDK 5 이상 OJDBC14 - JDK 1.4 이상 OJDBC13 - JDK 1.3 이상 OJDBC12 - JDK 1.2 이상 자바 프로젝트에 OJDBC 설치하기(적용하기) Dynamic Web Project에서 ojdbc6.jar 를 복사하여 추가한..
[Oracle] 오라클 View, 뷰
·
Database/Oracle
VIEW 복잡한 쿼리를 간단하게 표현하려는 목적을 가지고 있다. 접근 할 수 있는 데이터의 범위(컬럼)를 축소시키는 용도로 사용할 때도 있다. 테이블에서 조회되는 컬럼을 제한할 수 있다. 조회결과를 저장하지 않는다, VIEW 는 SELECT 쿼리 (Sub Query)를 텍스트로 저장하고 있다. VIEW 는 이름만 봐서는 TABLE 인지 VIEW 인지 구분할 수 없다. 자료사전들은 대부분 VIEW 이다. VIEW 를 통해서 원본 테이블에 조회, 삽입, 수정, 삭제가 가능하다. 뷰 생성 구문 CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW VIEWNAME AS () [WITH CHECK OPTION] ; CREATE VIEW viewname AS ( 서브 쿼리 작성 ) 뷰만 생성..
헌일
'Database/Oracle' 카테고리의 글 목록