예를 들어 대출을 받은 고객의 대출상태 (정상, 연체)를 월별로 이력을 남겨놨다고 하자 고객의 대출상태가 변경된 월을 뽑고자 한다면 어떻게 해야 할까? WITH T (MM,ST) AS ( SELECT '201601','1' FROM DUAL UNION ALL SELECT '201602','1' FROM DUAL UNION ALL SELECT '201603','1' FROM DUAL UNION ALL SELECT '201604','2' FROM DUAL UNION ALL SELECT '201605','2' FROM DUAL UNION ALL SELECT '201606','1' FROM DUAL UNION ALL SELECT '201607','2' FROM DUAL UNION ALL SELECT '20160..
요즘 여유가 생겨서 그런지 블로그에 글을 올리고 있습니다. 여유가 생긴 김에 글을 쓰는 주제가 주로 생각나는 IT 스킬을 올려두는 것이기에 첨부되는 코드를 보기좋게 하는 것에 관심을 가지게 되었습니다. 이 글을 해당 블로그에도 적용되어 있는 SyntaxHighlighter 라이브러리를 어떻게 티스토리에 적용하는 지 기록해 두기 위해서 작성되었습니다. 우선 SyntaxHighlighter 가 어떤 놈이냐 하면 다음 코드를 보기좋게 표현하는 라이브러리 입니다. function hellow(nm) { alert('hi ' + nm); } 위의 코드에 SyntaxHighlighter 라이브러리를 적용하면 다음과 같이 보이게 됩니다. function hellow(nm) { alert('hi ' + nm); } 적..
구분자로 문자열을 잘라와야 되는 경우가 있습니다. 전화번호 포맷이나 날짜포맷 문자열에서 해당 자리수 값을 가져오는 식인데 오라클 9버전 이전에 개발자들은 INSTR 함수를 이용해서 문자열을 잘라야 했습니다. 대충 SELECT SUBSTR(tel, 1, INSTR(TEL, '-', 1, 1) -1) AS S1 , SUBSTR(tel, INSTR(TEL,'-', 1, 1)+1, INSTR(tel, '-', 1, 2) - INSTR(tel, '-', 1, 1) -1) AS S2 , SUBSTR(tel, INSTR(tel, '-', 1, 2)+1) AS S3 FROM ( SELECT '02-2222-3333' AS tel FROM DUAL ) 뭐 이런식이였기에 간단한 기능인데 쿼리가 복잡해지는 문제가 있었죠. ..
Windows7에서는 기본적으로 telnet 클라이언트 프로그램이 비활성화 되어 있습니다. 보안상 막아놨다고 생각은 하지만 가끔 단순하게 연결 테스트만 하고자 하는 경우나 마땅한 텔넷 클라이언트 프로그램이 없는 경우 해당 기능을 활성화 해서 사용할 수 있습니다. 활성화 방법은 제어판\모든 제어판 항목\프로그램 및 기능 에서 왼쪽메뉴의 Windows 기능 사용/사용 안함 메뉴에서 처리 할 수 있습니다. Windows 기능 팝업창에서 목록중 맨 밑에 "텔넷 클라이언트" 를 체크한 후 확인버튼을 누르면 활성화 됩니다.
도움말을 보면 형식은 아래와 같지만 우린 단순하게 루프만 돌릴 생각이므로 FOR /L %변수 IN (시작,단계,끝) DO 명령 [명령-매개 변수] 요렇게 사용하면 됩니다. 단순하게 FOR /L %i IN (0,1,5) DO echo %i번째 하면 되겠네요. ※ bat파일 스크립트상에서 작성할 때는 변수선언 시 매개변수 접두사를 % 가 아닌 %%로 사용해야 합니다. =================== 아 래 =============================== FOR %변수 IN (집합) DO 명령어 [명령어 매개 변수] %변수 : 바꿀 수 있는 매개 변수를 한 문자로 지정합니다. (집합) : 하나 이상의 파일을 지정합니다. 와일드카드를 사용할 수 있습니다. 명령어 : 각 파일에 대해 수행할 명령을 지..
SVN으로 버전 관리되고 개발서버 등에 수동으로 배포하는 경우 의도하지 않게 .svn 폴더가 업로드 되는 경우가 있다. 이 경우 일일이 찾아서 지우기 귀찮기에 다음 명령으로 한번에 정리하면 좋음. find . -name .svn -print0 | xargs -0 rm -rf 가능하면 배포PC에서 해당 폴더를 지우고 업로드 하는 것이 좋다. .svn 폴더 안에는 svn 계정정보 및 버전이력정보 등이 있기에 업로드 파일 수만 늘려주게 되기에 지우고 올리는 것이 좋음.
펑션의 경우 FUNCTION 펑션명 ( .... ) RETURN 타입명 AUTHID 유저ID [CURRENT_USER] IS 프로시저의 경우 PROCEDURE 프로시저명 ( ..... ) AUTHID 유저ID [CURRENT_USER] IS 하면 됨. 참고 https://docs.oracle.com/apps/search/search.jsp?category=database&product=e50529-01&q=authid Oracle Help Center - Search Results for authid Database PL/SQL Language Reference, 12c Release 1 (12.1) Invoker's Rights and Definer's Rights (AUTHID Property) → ..
다음 URL 에서 확인 http://chery.tistory.com/53 NonBlocking I/O 관련( Channel ) 출처 : http://my.dreamwiz.com/conbox/deepjava/nio/08_niochannels.htm New I/O(java.nio) 8. java.nio.channels 패키지 소개 nio 패키지는 기존의 io패키지와는 달리 nonblocking을 지원해 준다. 이런 입출력의.. chery.tistory.com
이번 경주 마우나 리조트의 붕괴사고로 인해서 PEB공법에 대한 안전문제가 대두되고 있다고 합니다. 과연 이 공법은 어떻게 지어지길래 안전에 문제가 있을까 궁금해져서 구글링을 해 봤습니다. 일단 PEB 는 Pre-Engineered Metal Building System 의 약자로 직역하면 조립식 철골 건축 시스템 정도로 해석됩니다.뜻 그대로 공장에서일차 생산된 부품을 현장에서 조립해서 완성하는 철골구조 건물을 만드는 시스템이라는 것이죠. 이 공법의 장점은 공장에서 어느정도 완성된 건물구조를 현장으로 배달해서 조립하기 때문에 일정한 제품품질을 얻을 수 있고 현장에서는 단순 조립만 하기 때문에 기간을 단축시킬 수 있으며 인력을 절감할 수 있고 공장에서 생산되기 때문에 여러모로 비용이 저렴합니다. 그리고 이 ..
아직 사용은 하지 못해 봤지만 Microsoft에서 만들었으니 해당 OS에는 최적화가 되어 있을 듯 하다. 문제는 얼만큼 딜레이 없이 공유가 가능한가 이겠죠. Microsoft Garage Mouse without Borders http://www.microsoft.com/en-us/download/details.aspx?id=35460 자세히 읽어보지는 않았지만 마우스, 키보드 공유는 물론이고 클립보드 공유(텍스트) 외에도 드레그 댄 드랍으로 파일 카피도 가능하다고 합니다. 윈도우즈XP 서비스팩3 이후부터는 다 지원되는 듯 하고 양쪽 PC에 동일버전이 설치되어 있어야 한다고 합니다. 그리고 추측이지만 방화벽설정에서 파일 및 프린트 공유가 체크되어 있어야 될 듯 합니다.
한대가 아닌 여러대의 PC를 놓고 쓰는 경우 책상공간이 많이 부족합니다.요즘 PC가 워낙 슬림화 되어 있어서 본체와 모니터를 놓기는 충분하다고 하더라도 문제는 키보드와 마우스 입니다. 특히 키보드 는 소형화에 한계가 있는 제품이기 때문에 - 일단 사용자가 손가락으로 눌러야 되기 때문에 - 공간을 많이 차지하게 됩니다. 이런때에 PC간 네트워크로 키보드와 마우스를 공유하는 프로그램을 사용하면 PC가 여러대라 하더라도 키보드와 마우스를 하나만 사용하게 되니 공간을 넓게 쓸 수 있습니다. 보통 많이 사용하는 프로그램이 InputDirector 입니다. 공식사이트 :http://www.inputdirector.com 설정이 정말 간단하고 다양한 기능을 제공하고 있어서 키보드, 마우스 공유 프로그램 중에서 가장 ..
대출 프로그램 작성 시 상환계획을 임시로 보여주기 위하여 납부일이 휴일인지 여부를 확인하여 목록을 가져오기 위한 쿼리를 기록으로 남깁니다. 매월 25일를 가져오는데 휴일인 경우 익영업일로 가져오기 /* 매월 25일 중 휴일은 성탄절 하루 12월의 휴일은 성탄절 하나. 대체휴일 24, 26일중 휴일은 없음. */ SELECT TO_CHAR(TRUNC(S.DT,'MM'),'YYYYMMDD') AS SDT , CASE WHEN TO_CHAR(S.DT,'D') IN (1,7) THEN TO_CHAR((S.DT + (2-MOD( TO_CHAR(S.DT,'D') ,7))),'YYYYMMDD') ELSE TO_CHAR(S.DT,'YYYYMMDD') END AS CDT FROM ( SELECT CASE WHEN TO_..
오라클에서 날짜정보를 가져올 때 적용 포맷문자열을 기록하기 위하여 남깁니다. SELECT TO_CHAR(TRUNC(D.DT,'MM'),'YYYYMMDD') AS "해당월의 첫날" , TO_CHAR(LAST_DAY(D.DT),'YYYYMMDD') AS "해당월의 마지막날" , TO_CHAR(D.DT,'YEAR') AS "년의 영문명" , TO_CHAR(D.DT,'YYYY') AS "년도4자리" , TO_CHAR(D.DT,'YY') AS "년도2자리" , TO_CHAR(D.DT,'MONTH') AS "개월의 영문명" , TO_CHAR(D.DT,'MON') AS "개월의 영문약어" , TO_CHAR(D.DT,'MM') AS "개월2자리" , TO_CHAR(D.DT,'DAY') AS "요일" , TO_CHAR(..
타입을 별도로 선언하는 것도 좋지만 패키지로 선언해서 사용하는 것이 편리하다. PACKAGE TYPES AS /* 범용 커서 */ TYPE CURSORTYPE IS REF CURSOR; /* 정의된 레코드 */ TYPE 정의REC IS RECORD( 컬럼명1 VARCHAR2(50), 컬럼명2 NUMBER(10), 컬럼명3 NUMBER(20), 컬럼명4 NUMBER(5) ); /* 정의 커서 */ TYPE 정의TYPE IS REF CURSOR; RETURN 정의REC; END; 법용적으로 사용되는 커서의 경우 따로 정의할 필요없이 바로 바로 사용이 가능하지만 어떤 정보가 넘어올 지 알 수가 없기 때문에 변수를 선언한 후 받아야 한다. (물론 java 등에서 받을 때는 ResultSet으로 받으면 되지만....
급하게 다른 시스템의 DB서버에서 데이터 목록을 가져와서 활용해야 하는 일이 주어졌다. 보통은 API 를 작성해야 하지만 각 시스템에 API를 작성하여 적용할 시간이 부족한 관계로 DB Link를 통하여 레퍼런스 커서로 데이터를 가져오는 개발을 진행하였기에 그 기록을 남깁니다. 미리 이야기 하지만 이 방식은 절대 절대 추천하지 않습니다. 가장 큰 이유는 각 시스템 DB서버에 영향을 끼칠 가능성이 매우 크기 때문에 위험한 방식입니다. 우선 원격의 대상 DB에 레퍼런스 커서를 리턴해줄 프로시저 생성 합니다. PROCEDURE 프로시저명 ( io_cur IN OUT NUMBER ) IS mySql varchar2(1000) := 'SELECT * FROM TAB'; rcNUMBER; BEGIN io_cur :..
유니코드를 이용하지 않고 MBCS(Multi Bytes Character Set) 을 사용하는 시스템과 통신 시 싱글바이트 문자열로 변경하는 소스코드 기록한다. /** * 멀티바이트 한글문자를 싱글바이트 문자열로 변경 (db2 -> oracle) * 작성 날짜: (00-06-18 오전 7:57:31) * @return java.lang.String * @param full java.lang.String */ public static String fullToHalf(String full) { String answer = null; int fullLength = full.length(); char[] ch1 = new char[fullLength]; full.getChars( 0, fullLength, ch..
ORACLE 에서 사용자 정의 CURSOR를 사용하여 값을 리턴 받았을 때 닫는 문제 오라클의 프로시저 및 펑션 오브젝트에서 커서로 값을 리턴할 때 커서가 OPEN 된 상태이기 때문에 받는 쪽에서 닫아주지 않는 경우 커서 OPEN 갯수 초과로 오류가 발생할 위험이 있다. Pro* C : EXEC SQL :ref_cursor_variable; SQLPlus : Implicit PLSQL : Close ref_cursor_variable; Java : RecordSet.close(); 다른 언어들도 대략 비슷할 것 같다.
보통 ORACLE에서 날짜정보를 TO_CHAR 함수를 이용하여 문자열로 변환할 때 포맷을 다음과 같이 사용하게 된다. SELECT TO_CHAR(SYSDATE,'YYYY. MM. DD') FROM DUAL; 이 경우 결과가 2013. 03. 07 과 같이 나오게 되는데 때로는 2013. 3. 7 처럼 표기하고 싶을 때가 있다. 각각의 개월과 날수를 따로 받아서 넘버타입으로 변환 할 수도 있겠지만 간단하게 다음과 같이 해결할 수 있다. SELECT TO_CHAR(SYSDATE,'YYYY. fmMM. DD') FROM DUAL; 보면 개월 포맷 앞에 fm 이라고 붙어있는데 실행시켜 보면 다음과 같은 결과를 얻을 수 있다. 2013. 3. 7
- Total
- Today
- Yesterday