화면 구성 Script //좌측버튼 this.ExecSetTimerButton_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo){ console.log('>> setTimer function'); this.setTimer(1, 1000); }; //우측버튼 this.ExecKillTimerButton_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo){ console.log('>> killTimer function'); this.killTimer(1); }; //ontimer 함수 this.화면ID_ontimer = function(obj:nexacro.Form,e:nexacro..
1. FROM 테이블이 존재하는지 USER가 해당 테이블에 대한 SELECT 권한이 있는지 먼저 체크한다. 만약 JOIN절이 존재한다면, JOIN을 먼저 수행한다음 FROM절을 수행한다. 2. WHERE JOIN 혹은 FROM 절에서 가져온 테이블에서 조건에 맞는 ROW 만을 가져온다. 3. GROUP BY 명시한 컬럼들을 그룹화하며, 집계함수를 이용할 때 주로 사용한다. 4. HAVING GROUP BY 절이 존재한다면 다음으로 HAVING 절을 수행한다. WHERE 절과 마찬가지로 조건에 맞는 ROW를 가져온다. WHERE절은 테이블 상의 모든 필드에 조건에 두지만, HAVING은 GROUP BY에 의해 그룹화된 결과에 대해 조건을 준다. --WHERE 절 사용 SELECT department, sa..
1. 그리드 headclick 이벤트 추가 2. 이벤트 작성 head의 체크박스 인덱스는 0번째라고 가정한다. this.Grid00_onheadclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo){ try { if (e.col == 0) { /*체크박스 인덱스 : 0*/ var checkValue; if (obj.getCellProperty("Head", 0, "text") == "1") { obj.setCellProperty("Head", 0, "text", "0"); //체크해제 checkValue = "0"; } else { obj.setCellProperty("Head", 0, "text", "1"); //체크 checkValue = "..
대량 데이터 삽입 로직 데이터 입력시 보통 단건 또는 10건 미만으로 입력이 들어오기 때문에 입력되는 ROW수 만큼 INSERT쿼리 호출이 이루어진다. 그러나 1만 8천 건 정도 되는 데이터를 한 번에 INSERT 하니, 수행 시간이 5분 이상 소요되었고 이대로는 사용할 수 없다고 판단했다.(오류는 나지 않더라도 예외 메세지가 뜨면서 통신이 끊어진것 처럼 보였다.) 일반적으로 사용했던 INSERT 로직 (대용량 INSERT에 부적합) 사용자가 이용할 수 없는 속도를 보여줬기 때문에 삽입하는 ROW 수만큼 쿼리를 호출해 수행하는 기존 INSERT 로직을 이용할 순 없었다. 나중에 들어보니 AS-IS(기존 시스템)에선 10분넘게 걸렸었다고한다... //paramList : 화면단에서 넘겨받은 Data for..
차세대 프로젝트에서 데이터 이관작업을 위해 AS-IS 테이블을 ①우리 개발 DBMS로 그대로 밀어 넣은 다음, ②프로시저를 돌려 개발에 사용되는 테이블에 데이터를 밀어 넣는 작업을 하는 중 DB가 뻗어버렸다.데이터가 1000만건이 넘어가고 다른 프로시저들이 함께 돌아가다 보니 프로시저를 한 번에 실행하기 어려웠던 것으로 보인다. 프로시저 분리 및 인덱스 추가그래서 테이블 데이터를 조건별로 데이터를 끊어서 밀어넣기로 했다. 그렇다 해도 최대 70만 건의 row를 조회하기 때문에 속도개선을 위해 SELECT 문에 조인 조건으로 사용 중인 컬럼들에 인덱스를 추가했다. (기간에 해당하는 컬럼은 기존에 조인조건에도 포함되었기 때문에 인덱스로 같이 잡혔다.) 결과확실히 데이터 건수가 작아지다 보니 실행 시간이 단..
한 화면에 그리드가 몰려있는 경우, 모든 그리드의 BODY 영역의 row가 선택된 상태로 있기 때문에 보기 안좋을 때가 있다. Grid.selectRow() 메서드를 이용해 N개 의 그리드가 있을 때도 하나의 그리드의 row만 선택할 수 있도록 구현해보았다. * selectRow()메서드는 그리드의 selecttype 속성값이 "row" 또는 "multirow" 인 경우만 동작한다. 초기 포커스 해제하기 조회직후 콜백단에서 그리드 row를 선택하지 않도록 해준다. selectRow에 rowIndex 인자로 전달되는 -1 인덱스는 존재하지 않아 row가 선택되지 않지만 기존에 선택되어있는 row를 선택해제 시켜준다. this.init_GridFocus = function(objGrid){ if(typeof..
동적 쿼리 iBatis는 기본적으로 이전 쿼리 결과의 메타데이터를 캐싱하는데 조회마다 컬럼이 달라지는 동적쿼리를 사용하는 경우 캐싱으로 인해 오류가 발생할 수 있다. 이 때 태그에 다음과 같은 속성을 추가하면 메타데이터 캐싱작업을 막을 수 있다. iBatis iBatis DataMapper 2.0 Developer Guide The remapResults attribute should be set to true when a query has a variable set of return columns. For example consider the following queries: SELECT $fieldList$ FROM table Mybatis MyBatis 3 – 사용자 가이드 flushCache 이 ..
- Total
- Today
- Yesterday
- 환경설정
- CS
- 백준
- Java
- 넥사크로
- svn
- C++
- Thymeleaf
- HeidiSQL
- 부트스트랩
- Open API
- C
- 국비교육
- 네트워크
- 이클립스
- 스프링부트
- CSS
- JSP
- 프로그래머스
- JVM
- 오류
- 스프링
- SQL
- 인턴
- 오라클
- 개발용어
- 데이터베이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |