분류 전체보기 26

[MSSQL] MAX KEEP

아래와 같은 데이터가 있을 때, 각 JOB별로 가장 많은 SALARY의 NAME을 알고 싶다면 설계자 ☞ 송차장 750 개발자 ☞ 정사원 160 ORACLE은 아래와 같이.. WITH EMP AS ( SELECT '남이사' AS NAME , '설계자' AS JOB , 700 AS SALARY FROM DUAL UNION ALL SELECT '이부장' AS NAME , '설계자' AS JOB , 680 AS SALARY FROM DUAL UNION ALL SELECT '송차장' AS NAME , '설계자' AS JOB , 750 AS SALARY FROM DUAL UNION ALL SELECT '강대리' AS NAME , '개발자' AS JOB , 80 AS SALARY FROM DUAL UNION ALL..

DB/MSSQL 2022.06.30

[MSSQL] EXISTS 주의사항

아래와 같은 SQL 이 있었다. DELETE FROM TB_D WHERE EXISTS ( SELECT 1 FROM TB_M B WHERE B.NO = @NO AND B.PK = PK ) 의도 자체는 TB_M을 이용하여 TB_D의 특정 데이터만 삭제하길 원했던 것으로 보인다. 그러나 실제론 운영서버 TB_D 테이블의 모든 데이터가 삭제 되고 있었다 ㅜ_ㅜ 확인하여 보니 아래 부분이 문제가 되고 있었다. TB_D와 TB_M간의 PK 컬럼을 비교하는 것이 아닌, TB_M과 TB_M간의 PK 컬럼을 비교하고 있었다. DELETE FROM TB_D WHERE EXISTS ( SELECT 1 FROM TB_M B WHERE B.NO = @NO AND B.PK = PK -- 비교 구문이 무조건 TRUE. ) 오라클이..

DB/MSSQL 2022.06.21

[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

[JAVA SCRIPT] findRowExpr(VLOOKUP) 구현하기

① 투비소프트의 XPLATFORM에서② 인스웨이브의 WebSquare5로 UI 전환 프로젝트를 진행한 적이 있었다. ①에는 있었던 findRowExpr, getCaseCount 등등이 ②에는 없었다.예컨대,이름이 '울면서잠들기'아니고 28살보다 많은 대상 찾기 → 불가능 그리하여,웹스퀘어에서 사용하기 위한 findRowExpr, getCaseCount 등등을 만들었는데굳이 웹스퀘어가 아니더라도 자바스크립트를 사용하는 프로젝트라면 활용이 가능할 것 같다. JAVA SCRIPT findRowExpr 구현조건표현식을 만족하는 첫번째 인덱스를 반환(없으면 undefined)var arr = [ {"이름": "안경은", "나이":25, "지역": "서울"} // 0 , {"이름": "이민준", "나..

JAVA SCRIPT/NEXACRO 2022.02.14