DB/ORACLE 9

[ORACLE] 다른 테이블에서 특정 코드 데이터가 있는지 확인하는 FUNCTION

1. SI 프로젝트 진행시 대개 PL이 ERD를 그릴때 테이블간 FK를 연결해놓는다. 2. 그런데, ERD를 각 개개인이 담당하는 업무별로 작성하다보니 본인의 업무내에서는 FK가 연결이 되는데 타업무와는 연결이 안 되는 경우가 있었다. 3. 예컨대, 회계업무에서 관리하는 거래처코드를 급여업무에서 사용하고 있었는데 거래처코드가 삭제 되어 버린다던지.. (실제로 일어난 일) 4. 위 상황을 구현 단계에서 방어 할 수 있지 않을까 싶다. ※ 구현 스크립트 내의 TF_SPLIT_TO_ROW TABLE FUNCTION은 아래 링크에서 확인 할 수 있다. [ORACLE] 구분자로 분리하여 행으로 반환하는 TABLE FUNCTION 1. 우선 RETURN 받을 ROW의 COLUMN TYPE OBJECT를 생성 컬럼이..

DB/ORACLE 2023.09.27

[ORACLE] 텍스트 균등분할(균등정렬) FUNCTION

출력물을 개발하는데, 출력물 툴이 html 버전에서는 균등분할을 지원하지 않는다 오피셜 답변은 아래와 같다. ____________________________________________________________________________________ 안녕하세요. 기술개발팀입니다. 텍스트 상자 서식의 경우 WS 뷰어에서만 적용되는 속성으로 HTML 뷰어에서는 제공되지 않는 기능입니다. HTML 뷰어에서 글자 간격을 조절하기 위해서는 공백문자를 사용하여 조절해주셔야 합니다. 감사합니다. ____________________________________________________________________________________ 그리하여 Bing AI 도움을 받았다. DECLARE INPU..

DB/ORACLE 2023.08.18

[ORACLE] BETWEEN 주의사항

1. 단일 일자의 데이터가 있고 프로그램 조회조건이 FROM ~ TO로 되어 있다면 BTWEEN을 통해서 간단히 데이터를 추출해 낼 수 있다. WITH TEMP AS ( SELECT '20220711' AS DT FROM DUAL ) SELECT A.DT AS DT FROM TEMP A WHERE A.DT BETWEEN '20220708' AND '20220712' 2-1. 데이터도 FROM ~ TO, 조회조건도 FROM ~ TO로 되어 있다면 어떻게 하면 될까? 우선 BETWEEN을 두번 쓰면 데이터가 나오는 것처럼 보인다. WITH TEMP AS ( SELECT '20220711' AS STT_DT , '20220717' AS END_DT FROM DUAL ) SELECT A.STT_DT AS STT..

DB/ORACLE 2022.07.11

[ORACLE] 구분자로 분리하여 행으로 반환하는 TABLE FUNCTION

1. 우선 RETURN 받을 ROW의 COLUMN TYPE OBJECT를 생성컬럼이 더 필요하다면 추가정의 하면 된다.CREATE OR REPLACE TYPE TY_SPLIT_TO_ROW/*1.*/ AS OBJECT( TEXT VARCHAR2(4000)) 2. 이어서 COLLECTION TYPE 생성CREATE OR REPLACE TYPE TB_SPLIT_TO_ROW/*2.*/ AS TABLE OF TY_SPLIT_TO_ROW/*1.*/; 3. 드디어 TABLE FUNCTION 생성데이터 구분자가 ','로 고정 되어 있지만 필요에 따라 파라미터로 받아서 처리 할 수도 있을 것이다.CREATE OR REPLACE FUNCTION TF_SPLIT_TO_ROW/*3.*/( P_PARAM VARCHA..

DB/ORACLE 2022.02.16

[ORACLE] DB에서 신규, 수정, 삭제 차단

특정 테이블에 데이터가 신규, 수정, 삭제가 되지 않도록 막아야 하는 상황이 생겼다. 수많은 프로그램들을 일일이 수정을 해야하나 했는데, TRIGGER를 통해 아래와 같은 방법으로도 대응이 가능했다. create or replace TRIGGER TRI_TEST BEFORE DELETE OR INSERT OR UPDATE ON TB_TEST BEGIN /* 삭제 또는 신규 또는 업데이트시*/ RAISE_APPLICATION_ERROR(-20001, '데이터 수정이 불가합니다.'); /* 사용자에러발생 */ END; 데이터 수정시 아래와 같은 에러 발생 → ORA-20001 데이터 수정이 불가합니다. ORA-20001: 데이터 수정이 불가합니다. ORA-06512: at "TRI_TEST", line 3 ..

DB/ORACLE 2022.02.14