본문 바로가기
728x90
반응형

study_db25

오라클의 간단한 if 문 : DECODE 함수 오라클에서도 if 문처럼, true 와 false 로 다른 값을 보여주도록 할 수 있다. decode 문이 그렇다. SELECT DECODE(A, B, C, D, F, G) FROM TABLE; 위의 함수를 자바 소스처럼 풀어서 써보자면 의미가 아래와 같다. if (A == B) { return C; } else if (A == D) { return F; } else { return G; } 위의 소스처럼 순서대로 비교해서 결과값이 나오게 된다. 🐦 주의사항 🐦 1) DECODE 함수의 파라미터는 여러개를 사용할 수 있지만 최소 3개는 들어가야 한다. 파라미터를 2개 이하로 쓰면 아래와 같은 오류 발생함 ORA-00938: 함수의 인수가 충분하지 않습니다 00938. 00000 - "not enough .. 2023. 8. 4.
오라클 WITH AS 문 = 임시로 1회용 테이블 만들기 WITH AS 문은 뭔가 처음봤을 때는 오오 이게뭐야 🤩 ?! 했는데 막상 해보면 별 거 아닌 WITH AS 구문.. WITH AS 문은 임시 테이블 생성 구문 이라고 할 수 있다. 내가 가져오고 싶은 데이터들을 테이블처럼 가져올 수 있게 해준다. 나는 주로 JOIN 으로 묶기에 애매한 테이블이나, 아예 서로 관계가 없는 테이블의 데이터를 끌어와서 동시에 표현하고 싶을 때 사용한다. 이런 경우가 아니라면 JOIN 함 쿼리문 WITH TBL_TEAM AS ( SELECT '개발팀' AS 부서 , '사원' AS 직급 FROM DUAL ), TBL_TEAM_INFO AS ( SELECT '사원' AS 직급 , '2800' AS 연봉 FROM DUAL ) SELECT TT.부서 , TT.직급 , TTI.연봉 F.. 2023. 8. 4.
오라클 DATA TYPE 확인 : typeof() ? 오라클에도 data의 type을 확인할 수 있는 함수가 있을까? 없다. 쿼리 상에서 데이터 타입을 확인해서 뭔가 다른 처리를 하는 게 가능한 지 궁금했는데, 결과 데이터 형식을 고정하는 것에 만족해야 한다 ㅎㅅㅎ 만약 서브쿼리 등을 통해 다른 데이터를 가져오게 된다면 data type을 확인한다기보다는 애초에 가져 올 때 TO_NUMBER나 TO_CHAR 등으로 타입을 확정해서 가져오는 방식으로 쿼리를 짜야한다. 혹시나 있을까 열심히 구글링 했쥐만 없는 듯 특정 테이블 컬럼의 데이터 형식(VARCHAR2, NUMBER, ... ) 을 알 수 있는 DATA_TYPE() 함수만 나온다. DATA_TYPE() 함수는 이렇게 쓴다. SELECT DATA_TYPE FROM COLS WHERE TABLE_NAME .. 2023. 6. 27.
MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 오류 발생 명령행: 71 열: 1 오류 보고 - SQL 오류: ORA-38101: INSERT VALUES 절에 부적합한 열이 있음: "SCOTT"."A"."MBR_SEQ" 왜 이 오류가 났는지 처음에는 전혀 감이 잡히지 않았다. 서브쿼리만 떼다가 실행해봐도 문제가 없고, 다른 테이블로 만들었지만 똑같은 구조의 쿼리는 잘만 병합되었기 때문에.. ▼ 요런 구조였는데 MERGE INTO TMP_MBR X USING ( SELECT MBR.MBR_ID , MBR.MBR_SEQ , MBR.AGE FROM TB_MBR_MBR MBR WHERE MBR.MBR_ID = 'test01' ) Z ON ( X.TMP_MBR_.. 2023. 6. 27.
오라클 요일 정보 가져오기 오라클 db에서 요일정보 가져오기 -> day, dy, d를 사용 SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(D) hh24:mi:ss') FROM DUAL UNION SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(DY) hh24:mi:ss') FROM DUAL UNION SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(day) hh24:mi:ss') FROM DUAL ; d 입력시 -> 요일 숫자버전 출력 ( 일요일부터 1, 월요일 2, 화요일 3, 수요일 4, 목요일 5, 금요일 6, 토요일 7) dy 입력시 -> 요일 간단버전 출력 ( 일,월,화,수,목,금,토 ) day 입력시 -> 요일 상세버전 출력 ( 일요일,월요일,화요일,수요일,목요일,금요.. 2023. 5. 19.
시퀀스 생성과 시퀀스 초기화(수정) 방법 1. 시퀀스 순차적으로 유일한 번호값을 매겨주는 오라클의 객체 2. 생성 방법 일단 생성 쿼리.각 옵션에 대한 설명은 3번을 참조한다. CREATE SEQUENCE 시퀀스명 [START WITH n] [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE | NOCACHE] [ORDER | NOORDER] 초간단하게 생성하기. 아무 옵션없이 생성 CREATE SEQUENCE TEST_SEQ; SELECT TEST_SEQ.NEXTVAL FROM DUAL; --1 시작 번호 지정해주기 CREATE SEQUENCE TEST_SEQ_2 START WITH 100; SELECT TEST_SEQ_2.NE.. 2023. 3. 20.
DB 변경 이력 조회하기. 프로시저 수정 이력 확인하기 DB 구조객체가 언제 마지막으로 수정됐는지 확인할 수 있는 테이블이 있다 USER_OBJECTS 이 테이블은 언제 DB 객체가 만들어졌고 수정되었는지(LAST_DDL_TIME) 등등을 보여준다. 1. 프로시저 수정 이력 확인하기 SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE IN ('PROCEDURE','FUNCTION') AND OBJECT_NAME = '프로시저명' ; 다만 수정된 이력을 전체적으로 보여주는 것은 아니고, 하나의 행에 LAST_DDL_TIME이 업데이트 된다. OBJECT_TYPE에 원하는 형태값을 넣으면 되는데, 조회 가능한 형태값은 아래와 같다. 따라서 예를들어 TABLE이 마지막으로 수정된 시각을 보고싶다면 OBJECT_TYPE에 "TABLE" .. 2022. 12. 26.
오라클 & 치환/끄기, 대체 변수 입력 창 오라클 쿼리에 & + 텍스트 조합이 들어갈 경우, &다음의 텍스트가 변수명으로 해석된다. SELECT '&test' FROM DUAL; 이 때, 대체변수 입력창에 치는 내용이 곧 ' ' 안의 내용이 된다. 위의 쿼리를 실행한 후 뜨는 대체변수 입력창에 '123'을 치게되면 아래와 같은 화면을 볼 수 있다. 만약 이러한 설정을 끄고 싶다면 SET DEFINE OFF; 이 명령어를 치면 된다. 하쥐만 . . . 사실 나는 &가 포함된 텍스트를 where 절에 넣어 검색하고 싶었다... 나와 같은 경우라면 INSERT INTO TABLE_TEST (URI, MNU_CD, MNU_NM, MNU_UP_CD) VALUES ('&' || 'testParam=123','101','테스트','100'); SELECT *.. 2022. 10. 21.
ROWNUM 이해하기 1. ROWNUM 이란? ROWNUM은 SELECT 해온 데이터에 일련번호를 붙이는 것이다. 테이블이나, 특정 집합에서 원하는 만큼의 행만 가져오고 싶을 때, 행의 개수를 제한하는 용도로 사용한다. 예) 전체 행에서 TOP 3, 페이징 등 2. ROWNUM의 사용 기본적으로 SELECT * FROM EMP WHERE ROWNUM 2021. 4. 17.
집합 연산자 1. 집합 연산자란? 간단하게 말하면 각기 다른 테이블에서 가져온 데이터를 조인을 사용하지 않고 합쳐서 보여주는 방법이다. 2개 이상의 SELECT 결과를 연산자로 묶어, 마치 1개의 SELECT 쿼리를 친 결과처럼 보이게 한다. 따라서, 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할때 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때 의 상황에 집합 연산자를 사용한다. 집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS 가 있고 구분하자면 UNION --> 합집합 / 중복ROW 제거 UNION ALL --> 합집합 / 중복ROW 유지 INTERSECT --> 교집합 MINUS --> 차집합 1-2. 집합연산자를 사용하려면 .. 2021. 4. 17.
728x90
반응형