CREATE OR REPLACE TYPE TYPE_ENP_MRG AS OBJECT (
MRG_BEF_DETAIL_CMPY_ID NUMBER(10),
MRG_DE VARCHAR2(8)
);
CREATE OR REPLACE TYPE SF_ENP_MRG_TABLE AS TABLE OF TYPE_ENP_MRG;
create or replace FUNCTION 함수명 (V_ID IN NUMBER)
RETURN SF_ENP_MRG_TABLE
IS
V_RSLT SF_ENP_MRG_TABLE := SF_ENP_MRG_TABLE();
CURSOR_IDX INTEGER := 0;
CURSOR CURSOR_LIST1 IS
-- 쿼리 작성 ;
BEGIN
FOR DATE_ENP_MRG IN CURSOR_LIST1
LOOP
V_RSLT.EXTEND;
CURSOR_IDX := CURSOR_IDX + 1;
V_RSLT(CURSOR_IDX) := TYPE_ENP_MRG(
DATE_ENP_MRG.컬럼1, DATE_ENP_MRG.컬럼2
);
END LOOP;
RETURN V_RSLT;
END;
이렇게 만들어 놓고 호출할때는 일반 함수 호출하듯이 하면 안되고,
SELECT * FROM TABLE(함수명(#인자값1#));
요렇게 해서 사용하면 됨.
문제는 이렇게 했을떄 멀쩡했던 쿼리가 속도 저하가 되는 경우가 발생함.
여러가지 이유로 발생하는데, 나중에 기회되면 이 부분에 대해서도 글 작성해야겠음.
당장은 귀찮 ㅋㅋㅋ
'IT > Databases' 카테고리의 다른 글
Entity-Relationship Modelling(ERD) relationship type 에 관하여~ (0) | 2022.11.29 |
---|---|
오라클 함수나 프로시저에서 에러코드, 에러내용 출력시키기~ (0) | 2022.11.23 |
CREATE TYPE 생성 중 ORA-00955: 기존의 객체가 이름을 사용하고 있습니다. 오류 개짜증 ㅋㅋ (0) | 2022.11.09 |
TEMPORARY TABLESPACE 에 대한 각종 내용 정리. (0) | 2022.10.31 |
oracle temp tablespace resize (오라클 템프 테이블스페이스 리사이즈) (0) | 2022.10.12 |