DB/Oracle
-
Oracle VArray Procedure SampleDB/Oracle 2021. 5. 12. 18:26
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152-- CREATE OR REPLACE procedure MAT1.P_ADM0008_vTest ( pList in phone_varray_typ ) isCREATE OR REPLACE procedure MAT1.P_ADM0008_vTest is CURSOR vTestCursor is select DEPT_NO as dNo, PHONE_LIST as pList from mat1.dept_phone_list; dNo NUMBER(5) := ''; pList phone_varray_typ := phone_varray_typ(); BEGIN op..
-
Oracle - 값 중간에 빈부분 채워넣는 쿼리DB/Oracle 2020. 5. 18. 09:39
SELECT CASE WHEN c 1 AND c 0 THEN 1 -- min값이 1이 아니면 1로 처리 WHEN nullVal = 99 THEN 1 -- 해당 값이 null이면 1로 처리 ELSE Test END AS seqVal FROM (SELECT NVL (a + 1, 1) AS Test, c, nullVal -- 값이 null일때 99로 반환되는 값 FROM (SELECT a, NVL (a + 1, 1) AS Test, c, nullVal FROM (SELECT a, NVL (LEAD (A) OVER (ORDER BY A), 0) AS b, 0 AS c, 0 AS nullVal FROM (SELECT seq AS a FROM 테이블 WHERE 첫번째 키 = 값 AND 두번째 키 = 값 AND 세번..
-
ORA-01476 - 제수가 0 입니다DB/Oracle 2020. 2. 26. 11:05
에러 발생원인 제수(분모)의 값이 0이어서 분자를 나눌수 없어서 발생하는 오류로 제수(분모)를 NULL로 치환해서 계산합니다. 예) SELECT 100 / 0 FROM DUAL 결과 : ORA-01476: divisor is equal to zero SELECT 100 / NULL FROM DUAL 결과 : (NULL) 해결방법 DECODE를 이용해서 분모의 값을 NULL로 변경하면 최종 값이 NULL로 반환되며 NVL롤 NULL값일 때 0으로 처리합니다. SELECT NVL(분자 / DECODE(분모, 0, null, 분모), 0) FROM 테이블명
-
ORA-01481: 숫자 형식 모델이 부적합합니다DB/Oracle 2019. 11. 4. 12:31
우선 to_char 함수 자체에 대해서 이해를 하셔야 할 것 같습니다. to_char 다음에 인수 두개가 있는데, 첫 번째 인수에는 number 타입이나 date 타입이 들어가고, 두 번째 인수에는 해당 타입을 어떤 char 타입으로 바꾸냐를 결정하는 것입니다. 두 번째 인수에 들어가는 타입은 메뉴얼을 통해 자세하게 알아보시길 바랍니다. 위 구문을 그대로 수행하면 다음과 같이 나올것입니다. ------------------------------------------------------------------ SQL> select to_char('200707081232','yyyy-mm-dd') from dual; select to_char('200707081232','yyyy-mm-dd') from du..
-
Oracle - ObecjtDB/Oracle 2019. 1. 9. 09:52
Oracle Obecjt 타입은 객체지향에서 사용되는 클래스 개념과 같다. 구조체의 특성을 그대로 물려받고 함수까지 사용할 수 있다. - Object 생성 단순한 데이터 타입 뿐만 아니라 멤버함수까지 선언할 수 있다. 함수를 선언하긴 했는데, 이를 실제로 수행하는 로직을 구현해야 한다. CREATE OR REPLACE TYPE BODY 구문을 통해 생성할 수 있다. - ( 패키지의 BOD와 같은 개념이라고 이해할 수 있다. ) - Function 구현부 - dept_typ를 사용하는 테이블을 생성한다. * 오라클에서는 Object 타입 선언시 생성자를 굳이 명시하지 않더라도 타입 객체가 생성되면 오라클 내부에 생성자가 저장딘다. 그리고 생성자 함수의 명칭은 다른 객체지향 언어들에서처럼 클래스 이름, 즉 ..
-
Oracle - Materialized ViewDB/Oracle 2019. 1. 8. 18:50
구체화된 뷰라고도 불리며 실제 테이블에 있는 데이터를 조회한 결과를 스키마 오브젝트에 저장하여 이를 참조 가능하게 하는 뷰이다. MView는 대용량의 데이터를 집계하고 요약한 정보를 추출하는 정보의 시스템 과부하를 주지 않으면서 원하는 데이터를 빨리 추출하게 도와주는 역할을 한다. 사용자가 일일히 입력을 하지 앉아도 오라클이 알아서 MView에 자동으로 다시 새로운 데이터를 집계하고 값을 넣는다. 사용자 입장에서는 전혀 신경 쓰지 않고 MView를 다른 테이블이나 뷰처럼 사용하면 된다. sql*plus에서 효과적인 DB 탐색 경과 시간을 보기 위해 set timing on; 을 입력한다. Materialized View를 생성하려면 사전에 준비가 필요하다. * 생성 권한 - CREATE MATERIALI..
-
Oracle - DBMS_JOB 패키지 + DBMS_SCHEDULERDB/Oracle 2019. 1. 8. 17:30
오라클에서는 DBMS_JOB라는 패키지를 제공하고 있다. 특정 시간에 특정 작업을 할수 있도록 이용하는 프로시저이다. * SUBMIT 프로시저 - 일정 시간에 실행될 작업을 등록한다. - 프로시저를 수행하면 작업 큐에 등록되어 지정된 시간에 작업이 실행된다. * RUN 프로시저 - 스케줄에 상관없이 특정 작업을 실행시킨다. * REMOVE 프로시저 - 작업 큐에 등록된 작업들을 제거한다. * INTERVAL 프로시저 - 작업이 수행되는 시간간격을 조정한다. - interval 프로시저 파라미터에는 날짜와 같은 스케줄 파라미터가 올 수 있다. - 'sysdate+7' : 일주일에 한번 실행, 'next_day(sysdate, "TUESDAY") : 화요일마다 한번씩 실행, 'null' : 한번만 실행 - ..