라벨이 DEVELOP인 게시물 표시

Jquery DataTable 초기화

무료이면서 기능이 괜찮은 그리드 중에서 Jquery DataTable을 사용하는 일이 있었습니다. 그런데 이상한 에러가 있네요. DB이 데이터를 매핑하여 화면에 보여지는데 두개 이상의 Row값을 매핑하여 화면에 보여주고 다시 새로운 두개 이상의 Row값으로 매핑하면 괜찬은데, 하나의 Row값을 매핑하고 다시 새로운 두개 이상의 Row값으로 매핑하면 기존의 하나의 데이터가 사라지지 않는 이상한 에거가 나타 납니다. 이럴경우는 어떻게 해야 할까요? 하여 오늘은 Jquery DataTable 초기화에 대해서 알아보겠습니다.  결론부터 미리 말씀드리자면 clear().draw()을 통한 초기화를 해주면 됩니다. 아래는 제가 구현했던 소스를 올려봅니다. ▶ 자바스크립트 DataTable 초기화 부분 function fnGetRemark() {             var Order_M_Idx = "<%=EncryptKey(this.GetKeyId())%>";  // 제품장비/악세사리 주문 마스터 테이블 일련번호             var items = [                 {                     Order_M_IDX: Order_M_Idx                 }             ];             var options = {       ...

Oracle 프로시저 No rows returned 에러

엑셀 업로드 기능을 구현 할 때 엑셀의 값이 맞는지 체크하여 Case By Case로 에러 코드를 사용자에게 보여주고 에러가 발생하지 않는 경우에만 엑셀 업로드가 가능하게 하는 작업이 있었습니다. 사용자가 엑셀에 공통코드값의 명을 입력하고 업로드를 하면 프로그램에서는 공통코드값이 정확한 코드를 가지고 있는지 체크하여 insert 하는 방식 입니다. 이때 저는 프로시저를 사용했는데 select ~ into ~ 할 경우 데이터가 존재하지 않으면 No rows returned의 경우에는 에러가 나타나는 것이었습니다.  MSSQL에서는 안그러는데 Oracle은 에러를 발생하네요...ㅠ 하여 오늘은 Oracle 프로시저 No rows returned 에러에 대해서 알아보겠습니다. 처음에는 NVL을 사용해보고 별 짓을 다~ 해봤습니다. 하지만 NVL은 데이터가 Null일 경우 해당 Null을 지정한 다른 값으로 바꿔주는 기능인데 Null이라는 데이터 조차 없으니 동일한 에러가 계속해서 나는것이었습니다. 엄청난 시간을 삽질하다 결국 DUAL을 사용하여 해결을 하게 되었네요. 결과는 아래 소스를 확인하시면 되십니다. SELECT     Z.S_CD, Z.E_NAME, TO_CHAR(Z.CP) || Z.CP_UNIT INTO V_S_CD, V_E_NAME, V_CP   FROM (           SELECT               S.S_CD,   // 현장 코드 정보               G.E_NAME,  // 장비명               C.CP,      // CP   ...

Oracle 트리(Tree) 구조 추출

프로젝트 작업을 하다보면 오라클(Oracle)이건 Mssql이건 또는 Mysql이건 모든 곳에서 엄청나게 많이 사용하고 구현해야 하는것이 트리(Tree) 구현일 것입니다. MSSQL에서의 트리(계층형) 구현을 보고 싶으시면 아래의 바로가기를 참고해주세요. <== MSSQL 계층형 부서 와 사용자 트리 쿼리 바로가기  ==> 그럼 오라클에서는 어떻게 구현해야 할까요? 하여 오늘은 Oracle 트리(Tree) 구조 추출에 대해서 알아보겠습니다.  먼저 테스트 테이블을 만들어보겠습니다. CREATE TABLE TREE_TEST_TABLE (   CD_SEQ    NUMBER                              NOT NULL,   M_CD_SEQ  NUMBER                              NOT NULL,   CD_DETCD  CHAR(4 BYTE)                        NOT NULL,   CD_DETNM  VARCHAR2(100 BYTE)                  NOT NULL,   P_CD_SEQ  NUMBER,   UNIT      VARCHAR2(5 BYTE),   USE_FLAG  NUMBER(1)  ...

Oracle 프로시저 실행 확인

역시 사용하지 않는 언어를 개발하는 것은 힘이 드네요...ㅠ 간단한 프로시저를 만들고 out 결과를 토드나 SqlDeveloper에서 확인해 보고 싶은데, 방법을 모르겠습니다. 이럴 때 어떻게 해야 할까요? 하여 Oracle 프로시저 실행 결과 확인에 대해서 알아보겠습니다. 먼저 간단한 프로시저를 아래와 같이 생성 합니다. create or replace PROCEDURE SP_TEST_INSERT (   P_TEST_GROUP_ID VARCHAR2, /* 테스트 그룹 키*/   V_P_TEST_ID OUT VARCHAR2 /* 리턴 키 */ ) IS BEGIN   -- 리턴 값 셋팅   IF (P_TEST_GROUP_ID IS NULL) THEN     V_P_TEST_ID := LPAD(P_TEST_SEQ.nextval, 10, '0');   ELSE     V_P_TEST_ID := P_TEST_GROUP_ID;   END IF;   COMMIT; END SP_TEST_INSERT; 간단하게 위와 같은 프로시저를 만들었습니다. 이것을 실행하면 "PL/SQL 프로시저가 성공적으로 완료되었습니다"라는 문구만 보여줄뿐 실질적인 out값인 V_P_TEST_ID는 보여주지 않습니다. 이럴때 아래의 쿼리를 사용하시면 해당 프로시저의 out값을 확인 가능 하십니다. SET serveroutput on; DECLARE    V_P_TEST_ID VARCHAR2(20) := 'A'; BEGIN   SP_TEST_INSERT('', V_P_TEST_ID);   DBMS_OUTPUT.PUT_LINE('V_P_TEST_ID: ' || V_P_TEST_ID); END; 위와 같이 쿼리를 작성하시고 실행하시면 아래와 같은 ...

Oracle 테이블 생성 및 설명 생성 스크립트

오라클이건 MSSQL이건 툴의 디자이너를 통해서 생성하는 방법이 있습니다. 이 방법은 생성된 테이블을 다른 동료와 공유해야 하거나, 운영에 배포를 할 때, 다른 서버에 반영을 해야 할 때 등의 경우에 동일한 작업을 디자이너에서 일일이 해줘야 한다는 불편함이 있습니다. 하여 오늘은 Oracle 테이블 생성 및 설명 생성 스크립트에 대해서 알아보겠습니다. 스크립트(쿼리)로 작업을 했다면 동료에게 쿼리를 전달함으로 공유를 할 수 있고, 다른 서버나 운영 서버에 동일하게 적용 할 때 만들어 놓은 스크립트를 "F5"키로 실행만 하면 되니까요...ㅎ  ▶ Oracle 테이블 생성 스크립트(쿼리) CREATE TABLE "S_TEST_TABLE"   (   "TEST_TABLE_ID" VARCHAR2(20 BYTE), "TOP_TEST_TABLE_ID" VARCHAR2(20 BYTE), "PARENT_ID" VARCHAR2(20 BYTE), "TEST_TABLE_LEVEL" NUMBER(3,0), "TEST_TABLE_ORDER" NUMBER(3,0), "TEST_TABLE_NAME" VARCHAR2(500 BYTE), "TEST_TABLE_ENG_NAME" VARCHAR2(500 BYTE), "REMARK" VARCHAR2(500 BYTE), "STATUS" CHAR(1 BYTE), "REG_ID" VARCHAR2(100 BYTE), "REG_DATE" DATE, "MOD_ID" VARCHAR2(100 BYTE), "MOD_DATE" DATE   ) SEGMENT CREATION IMMEDIATE  PCTFREE 1...

Oracle 테이블 스키마 및 인덱스 정보 추출

MSSQL에서 테이블 칼럼에 대한 정보를 추출하는 블로그 글을 쓴적이 있습니다. MSSQL 테이블 정보 추출에 관해서 알고 싶으시면 아래 링크를 통해서 확인 가능 하십니다. [MSSQL Error 처리 및 칼럼 설명 정보 추출] [MSSQL 배열, 칼럼 추가 및 테이블 정보 추출] 오라클에도 동일하게 테이블 칼럼에 대한 정보를 추출 할 수 있습니다. 여기서는 또한 팁으로 인덱스 정보를 추출하는 쿼리도 같이 알아보겠습니다.  ▶  Oracle 테이블 스키마 정보 추출 SELECT     A.COLUMN_NAME     , B.COMMENTS     , A.DATA_TYPE     , A.DATA_LENGTH     , CASE WHEN C.CONSTRAINT_TYPE = 'P' THEN '○' ELSE '' END    -- PK 여부     , CASE WHEN A.NULLABLE = 'N' THEN '○' ELSE '' END     , A.DATA_DEFAULT FROM USER_TAB_COLUMNS A, USER_COL_COMMENTS B, (                                                 SELECT ...

Oracle 유용한 스크립트

많이 사용하는 DB중에 하나가 오라클이지요. 여기서는 Oracle을 사용할 때 유용하게 사용될 스크립트에 대해서 알아보겠습니다. 1. 테이블에 특정컬럼에 중복된 값을 찾는 SQL /*--------------------------------------------------------------------------*/ /* USAGE : @중복찾기.SQL [테이블명] [중복을조사할컬럼명] /* /* WARNING : 똑같은값이 2개 이상있을때 처음값은 출력 않되고 2번째   /* 값부터 출력됨. < > /*--------------------------------------------------------------------------*/ SELECT * FROM &1 A WHERE ROWID >   (SELECT MIN(ROWID) FROM &1 B WHERE B.&2 = A.&2) ORDER BY &2; 2. PK와 FK간의 연관관계를 찾아 보여주는 SQL   /*--------------------------------------------------------------------------*/ /*  사용법     :> @SHOW_POSITIONS  PARENT_TABLE  CHILD_TABLE     /*  DESCRIPT-xION  :  SHOWS PRIMARY AND FOREIGN KEY POSITIONS     /*     /*  WARNING   :  이 문장은 해당 TABLE의 CONSTRAINT생성시 NAMING      /*          CONVENTION을 따른 경우에 적용되도록 되어 있다.     /*--------------------------------------------------------------------------*/ SET VERIFY OFF   ...

자바스크립트 Tree 구현(dTree)

메뉴의 구조라든지, 부서를 표현 할 때 트리로 보여주는 경우가 대부분인데요. 계층형 구조라고도 하지요. 이렇게 트리로 보여주는 요구는 엄청나게 많은데요. 이렇게 엄청나게 자주 사용하는 트리 구현을 어떻게 해야 할까요? 하여 오늘은 Tree 자바스크립트 구현(dTree)에 대해서 알아보겠습니다. dTree는 무료이며 순수 자바스크립트 만으로 구현이 가능 합니다. ▶ 메뉴 구현 아래의 소스를 이용하시면 쉽게 메뉴 구현을 하실수 있습니다. (부서도 같이 쉽게 구현이 가능 하십니다.) <div class="dtree"> <script type="text/javascript"> <!-- //id, pid, name, url, title, target, icon, iconOPne, open, d = new dTree('d'); d.config.target="right"; d.config.folderLinks = false; // ----------------- INTRODUCTION ------------------// d.add(0,-1,'<B>FusionCharts Free</B>','','FusionCharts Free Documentation'); d.add(1,0,'<a href="javascript:treeClick(1);">Introduction</a>','','Introduction & Installation','','','',true); d.add(101,1,'<a href="javascript:treeClick(2);"...

ERWin 자주 사용하는 기능

DB를 설계할때 자주 사용하는 도구가 ERWin을 많이 사용하지요. 하지만, 저는 이번에 처음 사용해 보았네요...;;; 이번에 사용하면서 알게된 자주 사용할것 같은 기능들이 눈에 들어오네요...ㅎ 하여 오늘은 ERWin 자주 사용하는 기능에 대해서 알아볼까 합니다.  ▶ 네이밍 사전 등록 사용 칼럼들의 이름을 미리 등록하고 사전 처럼 언제든지 꺼내어 사용할 수 있는 기능입니다. 먼저 동그라미1번에서 처럼 "Tools" 탭을 클릭합니다. 그러면 동그라미2번과 같이 밑으로 메뉴들이 펼쳐지는데요. 2번의 "Names"를 클릭해서 오른쪽 메뉴의 3번 "Model naming Options..." 메뉴를 클릭하여  아래와 같이 Model naming Options 팝업을 띄워 주세요. 위와 같이 띄워진 Model naming Options 팝업창에서 동그라미4번과 같이 "Logical", "Physical" 탭의 기능을 이용해서 자주 사용하는 단어들을 등록하면 됩니다. 동그라미5번과 깉이 "Physical" 탭에서 알맞게 등록을 하시고 "Logical"에서도 동일한 방법으로 등록을 해줍니다. ▶ 기타 기능 - Domain Dictionary Domain Dictionary란 동일한 칼럼을 사용하는 여러개의 테이블에서 변경이 이루어질 경우 여러개의 테이블 정보에서 해당 칼럼을 수정하는것이 아닌 미리 등록해놓은 Domain에서 한번에 변경하여 사용 할 수 있도록 도와주는 기능 입니다. 동그라미6번의 "Model" 탭을 클릭하시고 "Domain Dictionary"를 클릭하셔서 해당 팝업창에서 Domain에 관한 정보를 등록하세요. 도메인이 등록되었다면 동그라미 8번, 9번, 10...

MSSQL 테이블칼럼 동적 추가

자동으로 배치를 돌려서 통계를 생성하는 등의 작업에서 특정 테이블의 칼럼을 Alter Table 쿼리문을 사용하여 칼럼을 동적으로 생성해줘야하는 작업이 있습니다. 동적쿼리가 보안에 취약하여 많이 사용하지는 않지만, 그래도 종종 어쩔수 없이 사용하는 경우들이 있어 오늘은 MSSQL 테이블칼럼 동적 추가에 대해서 몇자 적어보겠습니다.  들어가기에 앞서 주의 사항이 있습니다. 주의 : 테이블변수에는 Alter Table 명령이 실행되지 않습니다. MSSQL에는 테이블에 대한 정의가 4가지 있습니다. 일반테이블, 전역 임시 테이블, 지역 임시 테이블, 테이블변수 이렇게 4가지가 있는데, 결론부터 말씀드리면 4가지 테이블 중에서 앞의 일반테이블, 전역 임시 테이블, 지역 임시 테이블 테이블에만 Alter Table 명령이 실행되고 나머지 하나인 테이블변수에는 실행되지 않습니다. ▶ 작업 쿼리 -- 임시 테이블 존재여부 체크 후 삭제 IF OBJECT_ID('tempdb..#TEST_TABLE', 'U') IS NOT NULL     DROP TABLE #TEST_TABLE;   DECLARE     @ColumnName01 VARCHAR(50)   , @ColumnName02 VARCHAR(50)   , @ColumnName03 VARCHAR(50)   , @ColumnName04 VARCHAR(50); SELECT     @ColumnName01 = '[Sales Person]'   , @ColumnName02 = '[' + DATENAME(MONTH, GETDATE()) + ' Sales]'   , @ColumnName03 = '[' + DATENAME(MONTH, DATEADD(MONTH, -1, GETDATE())) + ' Sales]' ...

MSSQL 날짜 사이 특정 요일 날짜 구하기

조금 생소한 제목 입니다. 많이 구현하지 않는 방식으로 이상한 현업의 이상한 요구 사항으로 만들어 봤는데 나중에 쓰임이 있지 않을까하고 몇자 적어 봅니다. 제목을 간단하게 풀어보면, From ~ To와 같이 시작일과 종료일 사이에 특정 요일에 해당하는 날짜들을 추출하는 쿼리를 구한다는 의미 입니다. 하여 오늘은 MSSQL 날짜 사이 특정 요일 날짜 구하기에 대해서 알아보도록 하겠습니다.  -- 먼저 From ~ To와 같이 시작일과 종료일 셋팅 합니다. DECLARE @FromDate VARCHAR(10) = '2019-06-01' DECLARE @ToDate VARCHAR(10) = '2019-12-31' DECLARE @FromDiff SMALLINT; DECLARE @ToDiff SMALLINT; DECLARE @MIN SMALLINT = 1; WHILE (@MIN <= 2) BEGIN   IF (CASE WHEN @MIN = 1 THEN @DATEPART_FROM ELSE @DATEPART_TO END = 1) -- 일요일    IF (@MIN = 1) SET @FromDiff = 4 ELSE SET @ToDiff = 4;   ELSE IF (CASE WHEN @MIN = 1 THEN @DATEPART_FROM ELSE @DATEPART_TO END = 2) -- 월요일    IF (@MIN = 1) SET @FromDiff = 3 ELSE SET @ToDiff = 3;   ELSE IF (CASE WHEN @MIN = 1 THEN @DATEPART_FROM ELSE @DATEPART_TO END = 3) -- 화요일    IF (@MIN = 1) SET @FromDiff = 2 ELSE SET @ToDiff = 2;   ELSE IF (CASE WHEN @MIN = 1 THEN @DATEP...

MSSQL 올림, 반올림, 절삭 및 날짜 포맷

얼마전에 십단위 올림에 대해서 알아보다가 반올림, 올림, 버림에 대해서 여러가지 시스템 함수를 이용하는 방법에 대해서 알아보았었는데요.(아래 링크) [MSSQL 로우합치지 및 십단위 올림 참고] 여기서 조금 더 자세하게 알아보고 날짜에 대한것도 자세히 알아보도록 하겠습니다. 하여 MSSQL 올림, 반올림, 절삭 및 날짜 포맷에 대하여 아래와 같이 준비 했습니다. ▶ 반올림 및 자르기 1. 함수 : ROUND ( numeric_expression, length [, function]) 사용 DECLARE @AAA DECIMAL(16,5) = 12.35393 SELECT ROUND(@AAA,2)   => 결과값 : 12.35000   SELECT ROUND(@AAA,2)   => 결과값 : 12.35000 SELECT ROUND(@AAA,-1)   => 결과값 : 10.00000 SELECT ROUND(@AAA,-1)   => 결과값 : 10.00000 SELECT ROUND(@AAA,0)   => 결과값 : 12.00000 2. 자르기 : ROUND ( numeric_expression, length [, function]) 사용 SELECT ROUND(@AAA, 1, 1)  => 결과값 : 12.30000 SELECT ROUND(@AAA, 0, 1)  => 결과값 : 12.00000 SELECT ROUND(@AAA, -1, 1)  => 결과값 : 10.00000 ▶ 올림 함수 : CEILING ( numeric_expression ) 사용 SELECT CEILING(@AAA) => 결과값 : 13  SELECT CEILING( ...