2012년 7월 24일 화요일

[Oracle] Sql developer 3.1 설치 후 에러

++An error was encountered performing the requested operation:++

++ORA-00604: error occurred at recursive SQL level 1++
++ORA-01882: timezone region not found++
++00604. 00000 - "error occurred at recursive SQL level %s"++
++*Cause: An error occurred while processing a recursive SQL statement++
++(a statement applying to internal dictionary tables).++
++*Action: If the situation described in the next error on the stack++
++can be corrected, do so; otherwise contact Oracle Support.++
++Vendor code 604++


JAVA VM 옵션에서 시간대 설정이 안되어있기 때문임
아래 파일에 아래 옵션을 추가해주면 된다.


file;
D:\oracle\sqldeveloper\ver3.1.07.42\sqldeveloper\bin\sqldeveloper.conf

java VM option;
AddVMOption -Duser.timezone="+07:00"

2012년 7월 7일 토요일

[Android] 안드로이드 앱에서 Activity label 제거

1. AndroidMenifest.xml 을 연다
2. Activity 에 다음 줄을 추가한다.

android:theme="@android:style/Theme.NoTitleBar"



<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

[Git] Git 활용한 Android project 관리 ( Git + Eclipse + Android + Google Code)

여기서 정리해보려고 하는 것은
  • 1. 안드로이드 프로젝트
  • 2. 이클립스에서 개발
  • 3. 구글 코드프로젝트를 사용
  • 4. 버전관리 시스템으로는 Git

전체적인 순서는
  • A1. 구글 코드에서 프로젝트 생성
  • A2. 이클립스에서 EGit 플러그인 설치
  • A3. Clone Git repository
  • A4. 기존의 안드로이드 프로젝트를 Git Repository로 커밋
  • A5. Push 로 전체 소스 업데이트


A1. 구글코드에서 프로젝트 생성
먼저 code.google.com 에서 android 프로젝트를 생성한다.
생성 시에는 버전관리 시스템을 Git로 선택한다.
그러면 다음과 같은 Git Repository 정보를 얻을 수 있다.

git clone https://[project name]@code.google.com/p/[project name]/ 


A2. 이클립스에서 EGit 플러그인 설치

A3. Clone Git repository

그림1. code.google.com 에서 받은 repository URI 정보를 이클립스에 입력한다.
그림2. 브랜치를 선택한다.


A4. 기존의 안드로이드 프로젝트를 Git Repository로 커밋
커밋하기 위해 기존의 프로젝트를 share project 한다.

 그림3. 기존의 안드로이드 프로젝트를 share project 한다.

그림4. 로컬저장소를 지정한다.
A5. Push 로 전체 소스 업데이트

그림5. 프로젝트를 커밋한다.

그림6. 프로젝트를 Push 해서 소스코드를 업데이트한다.




2012년 7월 4일 수요일

[jQuery] attr() 과 prop() 차이점



Attribute/Property.attr().prop()
accesskey
align
async
autofocus
checked
class
contenteditable
defaultValue
draggable
href
id
label
location *
multiple
nodeName
nodeType
readOnly
rel
selected
selectedIndex
src
style
tabindex
tagName
title
type
width **


http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/ 에서 퍼옴

2012년 6월 30일 토요일

[jQuery] 1.7 변경사항 중

$(this).attr() 이 사용 중지되고 대신 $(this).prop()로 대체되었다.

2012년 6월 17일 일요일

[Android] DB에서 데이터 가져와 스피너에 업데이트하기


// 디비에접속해서 데이터를 가져와 커서에 넣는다.
Cursor itemCursor = mDbHelperTable.fetchAllAvailTables();
// 안드로이드 특성상 앱/데이터의 life cycle을 지키기 위해 startmanagingcursor를 호출한다.
 startManagingCursor(itemCursor);
  
      List list = new ArrayList();
     
      // create the string array.
      while(itemCursor.moveToNext()){
          String eng = itemCursor.getString(0);
          list.add(eng);
      }               
    

// 스피너 객체생성 
Spinner s = (Spinner) findViewById(R.id.spinner_table);

ArrayAdapter dataAdapter = new ArrayAdapter(this,
              android.R.layout.simple_spinner_item, list);
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(dataAdapter);

[Android] adb로 sqlite 테이블 select 하기

안드로이드 앱 개발시 sqlite를 사용하면 DB는 다음 위치에 저장되게 된다.

/data/data//databases
예> #cd /data/data/com.android.project-name/databases

데이터베이스 이름을 확인하고 sqlite를 실행한다.

#sqlite3

sqlite 커맨드 프롬프트가 보이면 sql을 실행할 수 있다.


테이블을 셀렉트
sqlite>select * from table_name;

테이블 목록을 확인하는 명령어
sqlite>.tables

[Android] ADB 기본

ADB란 Android debug bridge
쉽게 말하면 디버그를 쉽게 할 수 있도록 여러가지 기능을 제공한다.

ICS 이전에는

\android-sdk\tools

이곳에 있었으나 ICS 이후 부터는

\android-sdk\platform-tools

로 이동되었다.

아래 명령어로 실행할 수 있다.
 c:\>adb shell

2012년 3월 26일 월요일

[WordPress] WAMP 설치 및 초기세팅

  1. WAMP 설치
  2. WordPress 설치
  3. 윈도(xp)에서 설정해 줘야 할 것들
    1. 방화벽 포트열기
    2. httpd.conf 에서 allow for all 변경할 것
    3. 권한설정에서 'everyone' 모두 추가해서 하위 폴더까지 모두 읽을 수 있게 변경
    4. php 설정파일에서 allow for all 변경
  4. WordPress 설정
    1. 호스트 이름은 127.0.0.1로 하지 말고 지정할 것

[Oracle] DBMS Job 관리

Oracle 9i 기준

잡 추가

BEGIN
 DBMS_JOB.iSUBMIT (
   job => 341
  ,what => 'BEGIN PROCEDURE_NAME(to_char(sysdate-1,''YYYYMMDD''), '''',''SYSTEM''); END;'
  ,next_date => sysdate
  ,interval => 'TRUNC(SYSDATE+1)+23/24'
);
COMMIT;
END;
/
Next Date 업데이트

BEGIN DBMS_JOB.next_date(341, to_date('20120327 04:00','YYYYMMDD HH24:MI')); END;

Interval 업데이트

BEGIN DBMS_JOB.interval(342, 'trunc(sysdate+1)+3/24'); END;
  •  interval 은 다음 실행 시간을 지정해 준다.
  • 'trunc(sysdate+1)+3/24') 의미는 다음날 새벽 3시로 next date을 설정하라는 의미

2012년 3월 10일 토요일

[Python] 오늘 날짜 출력 예제

import os
import datetime

# get today and try to return as string
today = datetime.datetime.now()

print "Current year: %d" % today.year
print "Current year: %d" % today.month
print "Current year: %d" % today.day

month_str = str(today.month)
day_str = str(today.day)

# months manipulation
if len(month_str) == 1:
month_str = "0" + month_str
else:
month_str = month_str

# day manipulation
if len(day_str) == 1:
day_str = "0" + day_str
else:
day_str = day_str

today_str = str(today.year) + month_str + day_str
tm_str = str(today.year) + month_str

print today_str

2012년 3월 8일 목요일

[Oracle] function number to thai character

create or replace
FUNCTION FUNC_NUM2THAI (iAmount NUMBER)
RETURN VARCHAR2 AS
RtnValue VARCHAR2(300) := '';
vFloatVal NUMBER(15,2) := 0;
vIntVal NUMBER(25) := 0;
vDigit NUMBER(1) := 0;
vLetter1 VARCHAR2(50) := '';
vLetter2 VARCHAR2(50) := '';
vLength NUMBER(25) := 0;
vLength2 NUMBER(25) := 0;
vSubRtnVal1 VARCHAR2(300) := '';
vSubRtnVal2 VARCHAR2(300) := '';
iAmount2 NUMBER(15,2) :=0;
BEGIN
iAmount2 := iAmount;
-- check negative number --
IF iAmount2 < 0 THEN
iAmount2 := iAmount2*(-1);

END IF;

vFloatVal := REPLACE(iAmount2,',','')*100;
vIntVal := trunc(REPLACE(iAmount2,',',''))*100;
vFloatVal := vFloatVal - vIntVal;

IF vIntVal = 0 AND vFloatVal = 0 THEN
RETURN 'ศูนย์บาท';
END IF;

vLength := LENGTH(vIntVal/100);
FOR i IN 1..vLength LOOP
vLetter1 := '';
vDigit := SUBSTR(vIntVal/100,vLength-i+1,1);

IF vDigit = '1' AND i = 2 THEN
vLetter1 := 'สิบ';
ELSIF vDigit = '1' AND i = 1 THEN
IF SUBSTR(vIntVal/100,-2,1) <> '0' THEN
vLetter1 := 'เอ็ด';
ELSE
vLetter1 := 'หนึ่ง';
END IF;
ELSIF vDigit = '1' THEN
vLetter1 := 'หนึ่ง';
END IF;

IF vDigit = '2' AND i = 2 THEN
vLetter1 := 'ยี่สิบ';
-- ELSIF vDigit = '2' AND i = 1 THEN
-- IF SUBSTR(vIntVal/100,-2,1) <> '0' THEN
-- vLetter1 := 'เอ็ด';
-- ELSE
-- vLetter1 := 'สอง';
-- END IF;
ELSIF vDigit = '2' THEN
vLetter1 := 'สอง';
END IF;

IF vDigit = '3' AND i = 2 THEN
vLetter1 := 'สามสิบ';
ELSIF vDigit = '3' THEN
vLetter1 := 'สาม';
END IF;

IF vDigit = '4' AND i = 2 THEN
vLetter1 := 'สี่สิบ';
ELSIF vDigit = '4' THEN
vLetter1 := 'สี่';
END IF;

IF vDigit = '5' AND i = 2 THEN
vLetter1 := 'ห้าสิบ';
ELSIF vDigit = '5' THEN
vLetter1 := 'ห้า';
END IF;

IF vDigit = '6' AND i = 2 THEN
vLetter1 := 'หกสิบ';
ELSIF vDigit = '6' THEN
vLetter1 := 'หก';
END IF;

IF vDigit = '7' AND i = 2 THEN
vLetter1 := 'เจ็ดสิบ';
ELSIF vDigit = '7' THEN
vLetter1 := 'เจ็ด';
END IF;

IF vDigit = '8' AND i = 2 THEN
vLetter1 := 'แปดสิบ';
ELSIF vDigit = '8' THEN
vLetter1 := 'แปด';
END IF;

IF vDigit = '9' AND i = 2 THEN
vLetter1 := 'เก้าสิบ';
ELSIF vDigit = '9' THEN
vLetter1 := 'เก้า';
END IF;

IF vDigit = '0' THEN vLetter1 := NULL; END IF;

IF i = 3 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'ร้อย';
ELSIF i = 4 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'พัน';
ELSIF i = 5 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'หมื่น';
ELSIF i = 6 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'แสน';
ELSIF i = 7 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'ล้าน';
ELSIF i = 8 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || 'ล้าน';
END IF;

vSubRtnVal1 := vLetter1 || vSubRtnVal1;
END LOOP;

-- section for decimal point vFloatVal
vLength2 := LENGTH(vFloatVal);
FOR i IN 1..vLength2 LOOP
vLetter2 := '';
vDigit := SUBSTR(vFloatVal,vLength2-i+1,1);

IF vDigit = '1' AND i = 2 THEN
vLetter2 := 'สิบ';
ELSIF vDigit = '1' AND i = 1 THEN
IF SUBSTR(vFloatVal,-2,1) <> '0' THEN
vLetter2 := 'เอ็ด';
ELSE
vLetter2 := 'หนึ่ง';
END IF;
ELSIF vDigit = '1' THEN
vLetter2 := 'หนึ่ง';
END IF;

IF vDigit = '2' AND i = 2 THEN
vLetter2 := 'ยี่สิบ';
-- ELSIF vDigit = '2' AND i = 1 THEN
-- vLetter1 := 'สอง';
ELSIF vDigit = '2' THEN
vLetter2 := 'สอง';
END IF;

IF vDigit = '3' AND i = 2 THEN
vLetter2 := 'สามสิบ';
ELSIF vDigit = '3' THEN
vLetter2 := 'สาม';
END IF;

IF vDigit = '4' AND i = 2 THEN
vLetter2 := 'สี่สิบ';
ELSIF vDigit = '4' THEN
vLetter2 := 'สี่';
END IF;

IF vDigit = '5' AND i = 2 THEN
vLetter2 := 'ห้าสิบ';
ELSIF vDigit = '5' THEN
vLetter2 := 'ห้า';
END IF;

IF vDigit = '6' AND i = 2 THEN
vLetter2 := 'หกสิบ';
ELSIF vDigit = '6' THEN
vLetter2 := 'หก';
END IF;

IF vDigit = '7' AND i = 2 THEN
vLetter2 := 'เจ็ดสิบ';
ELSIF vDigit = '7' THEN
vLetter2 := 'เจ็ด';
END IF;

IF vDigit = '8' AND i = 2 THEN
vLetter2 := 'แปดสิบ';
ELSIF vDigit = '8' THEN
vLetter2 := 'แปด';
END IF;

IF vDigit = '9' AND i = 2 THEN
vLetter2 := 'เก้าสิบ';
ELSIF vDigit = '9' THEN
vLetter2 := 'เก้า';
END IF;

IF vDigit = '0' THEN vLetter2 := NULL; END IF;

vSubRtnVal2 := vLetter2 || vSubRtnVal2;
END LOOP;

IF vFloatVal = 0 THEN
RtnValue := vSubRtnVal1 || 'บาทถ้วน';
ELSIF vIntVal = 0 THEN
RtnValue := '-' || vSubRtnVal2 || 'สตางค์-';
ELSE
RtnValue := '-' || vSubRtnVal1 || 'บาท' || vSubRtnVal2 || 'สตางค์-';
END IF;

RETURN RtnValue;
END FUNC_NUM2THAI;

[Oracle] function number to english characters

create or replace
FUNCTION FUNC_NUM2ENG (iAmount NUMBER)
RETURN VARCHAR2 AS
RtnValue VARCHAR2(300) := '';
vFloatVal NUMBER(15,2) := 0;
vIntVal NUMBER(25) := 0;
vDigit NUMBER(1) := 0;
vLetter1 VARCHAR2(50) := '';
vLetter2 VARCHAR2(50) := '';
vLength NUMBER(25) := 0;
vLength2 NUMBER(25) := 0;
vSubRtnVal1 VARCHAR2(300) := '';
vSubRtnVal2 VARCHAR2(300) := '';
bLock_Digit Char(1) :='N';
iAmount2 NUMBER(15,2) :=0;
BEGIN

iAmount2 := iAmount;
-- check negative number --
IF iAmount2 < 0 THEN
iAmount2 := iAmount2*(-1);

END IF;

vFloatVal := REPLACE(iAmount2,',','')*100;
vIntVal := trunc(REPLACE(iAmount2,',',''))*100;
vFloatVal := vFloatVal - vIntVal;

IF vIntVal = 0 AND vFloatVal = 0 THEN
RETURN 'Zero Bath.-';
END IF;

vLength := LENGTH(vIntVal/100);
FOR i IN 1..vLength LOOP
vLetter1 := '';
vDigit := SUBSTR(vIntVal/100,vLength-i+1,1);

IF vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
bLock_Digit :='Y' ;
-- IF vDigit = '1' AND (i-1 = 1 OR i-1 = 4 OR i-1 = 7 ) THEN
-- vLetter2 := 'Ten';
-- ELSIF vDigit = '1' AND (i = 1 OR i = 4 OR i = 7 ) THEN
IF SUBSTR(vIntVal/100,-i+1,1) = '0' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Ten';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '1' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Eleven';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '2' AND vDigit = '1'AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Twelve';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '3' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Thirteen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '4' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Fourteen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '5' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Fifteen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '6' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Sixteen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '7' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Seventeen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '8' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Eighteen';
ELSIF SUBSTR(vIntVal/100,-i+1,1) = '9' AND vDigit = '1' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Nineteen';
END IF;
-- ELSIF vDigit = '1' THEN
-- vLetter1 := 'One';
-- END IF;
ELSIF vDigit = '1' AND SUBSTR(vIntVal/100,-i-1,1) = '1' AND (i = 1 OR i = 3 OR i = 4 OR i = 6 OR i = 7 OR i = 9) THEN
vLetter1 := 'One' ;
ELSIF vDigit = '1' AND SUBSTR(vIntVal/100,-i-1,1) is null THEN
vLetter1 := 'One' ||(SUBSTR(vIntVal/100,-i-1,1)) ;
ELSIF vDigit = '1' THEN
vLetter1 := 'One' ;
END IF;


IF vDigit = '2' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Twenty ';

ELSIF vDigit = '2' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Two';
ELSIF vDigit = '2' THEN
vLetter1 := 'Two';
END IF;

IF vDigit = '3' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Therty ';
ELSIF vDigit = '3' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Three';
ELSIF vDigit = '3' THEN
vLetter1 := 'Three';
END IF;

IF vDigit = '4' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Forty ';
ELSIF vDigit = '4' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Four';
ELSIF vDigit = '4' THEN
vLetter1 := 'Four';
END IF;

IF vDigit = '5' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Fifty ';
ELSIF vDigit = '5' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Five';
ELSIF vDigit = '5' THEN
vLetter1 := 'Five';
END IF;

IF vDigit = '6' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Sixty ';
ELSIF vDigit = '6' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Six';
ELSIF vDigit = '6' THEN
vLetter1 := 'Six';
END IF;

IF vDigit = '7' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Seventy ';
ELSIF vDigit = '7' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Seven ';
ELSIF vDigit = '7' THEN
vLetter1 := 'Seven ';
END IF;

IF vDigit = '8' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Eighty ';
ELSIF vDigit = '8' AND (SUBSTR(vIntVal/100,-i-1,1) <> '1' or SUBSTR(vIntVal/100,-i-1,1) is null) THEN
vLetter1 := 'Eight';
ELSIF vDigit = '8' THEN
vLetter1 := 'Eight';
END IF;

IF vDigit = '9' AND (i = 2 OR i = 5 OR i = 8 ) THEN
vLetter1 := 'Ninty ';
ELSIF vDigit = '9' AND SUBSTR(vIntVal/100,-i-1,1) <> '1' THEN
vLetter1 := 'Nine';
ELSIF vDigit = '9' THEN
vLetter1 := 'Nine';
END IF;

IF vDigit = '0' THEN vLetter1 := NULL; END IF;


IF i = 3 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || ' Hundred ';

-- IF i = 3 THEN
-- IF vDigit <> '0' THEN
-- IF MOD((vIntVal/100),100) >'0' THEN
-- vLetter1 := vLetter1 || ' Hundred And ';
-- ELSE
-- vLetter1 := vLetter1 || ' Hundred ';
-- END IF;
-- ELSIF MOD((vIntVal/100),100) >'0' THEN
-- vLetter1 := vLetter1 || ' And ';
-- END IF;


ELSIF i = 4 THEN
IF vDigit <> '0' THEN
vLetter1 := vLetter1 || ' Thousand ';
ELSIF (vIntVal/1000000) >= 1 AND (vIntVal/100000000) < 100 THEN
vLetter1 := vLetter1 || ' Thousand ';
END IF;

ELSIF i = 6 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || ' Hundred ';


ELSIF i = 7 THEN
IF vDigit <> '0' THEN
vLetter1 := vLetter1 || ' Million ';
ELSIF (vIntVal/1000000000) >= 1 AND (vIntVal/100000000000) < 100 THEN
vLetter1 := vLetter1 || ' Million ';
END IF;


ELSIF i = 9 AND vDigit <> '0' THEN
vLetter1 := vLetter1 || ' Hundred ';
END IF;

vSubRtnVal1 := vLetter1 || vSubRtnVal1 ;
END LOOP;

-- section for decimal point vFloatVal
vLength2 := LENGTH(vFloatVal);
FOR i IN 1..vLength2 LOOP
vLetter2 := '';
vDigit := SUBSTR(vFloatVal,vLength2-i+1,1);

IF vDigit = '1' AND i = 2 THEN
IF SUBSTR(vFloatVal,-1,1) =0 THEN
vLetter2 := 'Ten' ;
ELSIF SUBSTR(vFloatVal,-1,1) = '1' THEN
vLetter2 := 'Eleven';
ELSIF SUBSTR(vFloatVal,-1,1) = '2' THEN
vLetter2 := 'Twelve';
ELSIF SUBSTR(vFloatVal,-1,1) = '3' THEN
vLetter2 := 'Thirteen';
ELSIF SUBSTR(vFloatVal,-1,1) = '4' THEN
vLetter2 := 'Fourteen';
ELSIF SUBSTR(vFloatVal,-1,1) = '5' THEN
vLetter2 := 'Fifteen';
ELSIF SUBSTR(vFloatVal,-1,1) = '6' THEN
vLetter2 := 'Sixteen';
ELSIF SUBSTR(vFloatVal,-1,1) = '7' THEN
vLetter2 := 'Seventeen';
ELSIF SUBSTR(vFloatVal,-1,1) = '8' THEN
vLetter2 := 'Eighteen';
ELSIF SUBSTR(vFloatVal,-1,1) = '9' THEN
vLetter2 := 'Nineteen';
END IF;
ELSIF vDigit = '1' And i = 1 AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '1' THEN
vLetter2 := 'One';
END IF;


IF vDigit = '2' AND i = 2 THEN
vLetter2 := ' Twenty ';
ELSIF vDigit = '2' AND i = 2 AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '2' THEN
vLetter2 := 'Two';
END IF;

IF vDigit = '3' AND i = 2 THEN
vLetter2 := ' Thirty ';
ELSIF vDigit = '3' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '3' THEN
vLetter2 := 'Three';
END IF;

IF vDigit = '4' AND i = 2 THEN
vLetter2 := ' Forty ';
ELSIF vDigit = '4' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '4' THEN
vLetter2 := 'Four';
END IF;

IF vDigit = '5' AND i = 2 THEN
vLetter2 := ' Fifty ';
ELSIF vDigit = '5' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '5' THEN
vLetter2 := 'Five';
END IF;

IF vDigit = '6' AND i = 2 THEN
vLetter2 := ' Sixty ';
ELSIF vDigit = '6' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '6' THEN
vLetter2 := 'Six';
END IF;

IF vDigit = '7' AND i = 2 THEN
vLetter2 := ' Seventy ';
ELSIF vDigit = '7' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '7' THEN
vLetter2 := 'Seven';
END IF;


IF vDigit = '8' AND i = 2 THEN
vLetter2 := ' Eighty ';
ELSIF vDigit = '8' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '8' THEN
vLetter2 := 'Eight';
END IF;


IF vDigit = '9' AND i = 2 THEN
vLetter2 := ' Ninety ';
ELSIF vDigit = '9' AND SUBSTR(vFloatVal,-2,1) = 1 THEN
vLetter2 := '';
ELSIF vDigit = '9' THEN
vLetter2 := 'Nine';
END IF;


IF vDigit = '0' THEN vLetter2 := NULL; END IF;

vSubRtnVal2 := vLetter2 || vSubRtnVal2;
END LOOP;

IF vFloatVal = 0 THEN
RtnValue := vSubRtnVal1 || ' Bath Only';
ELSIF vIntVal = 0 THEN
RtnValue := '-' || vSubRtnVal2 || ' Satang-';
ELSE
RtnValue := '-' || vSubRtnVal1 || ' Bath ' || vSubRtnVal2 || ' Satang-';
END IF;

RETURN RtnValue;
END FUNC_NUM2ENG;

2012년 2월 26일 일요일

[Python] Python 예외처리 예제

만약 프로그램에서 어떤 파일이 있는지 여부를 파악하고 만약 파일이 존재하지 않을때 예외처리를 하고 싶다면

try:
# check script file
vScriptFileName = "d:\\backup\\db\\201202"+xx+".bzs"
f = open(vScriptFileName,'r')

except IOError:
print("File Not Found exception" )

2012년 2월 22일 수요일

[JAVA] 톰캣 구동 자바 명령어 에러 원인 확인방법

인터넷을 통해 찾아봤는데 쉽게 답을 얻을 수 없었던 문제
catalina.bat을 통해 생성된 톰캣 구동명령어를 실행 시 만약 문제가 생겨서 에러가 발생한다면 자바콘솔이 바로 닫혀버려서 에러를 확인할 수 없는 문제가 있는데 이때 확인 방법.

catalina.bat을 실행하면 마지막에 아래와 같은 자바명령어를 리턴하는데

start "Tomcat" "D:\Java\jdk1.6.0_14\jre\bin\java" -server -XX:+DisableExplicitGC ... org.apache.catalina.startup.Bootstrap start

이때 앞에 start "Tomcat"를 제거하고 실행하면 현재 화면에 그대로 에러까지 볼 수 있다.
참고로 start는 새창을 연다는 의미임

알고 있었다면 패쓰~!

[JAVA] JVM 서버모드로 기동 시 윈도에서 확인할것

JVM의 클라이언트버전과 서버버전을 골라서 실행할 수 있다.
단 윈도 JRE를 설치하면 서버버전은 포함되어있지 않다.
윈도 SDK를 설치하면 서버버전은 포함되어있다.
간혹 SDK를 설치하였지만 JRE 또한 별도로 설치했고 JRE_HOME을 SDK를 지정하지 않아서 서버모드로 기동이 안되는 경우가 있다.

서버모드로 기동하는 방법(톰캣에서)
set JAVA_OPTS=%JAVA_OPTS% -server

확인하는 방법(서버모드로 기동되었는지)

String s = System.getProperty("java.vm.name");
System.out.println(s);

아래와 같이 표시되면 성공!
Java HotSpot(TM) Server VM

서버 모드와 클라이언트 모드와의 차이점이 알고 싶다면
http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#compiler_types

2012년 2월 6일 월요일

[Oracle] 점진 누적 합계

고객의 채권잔액 처럼 시간이 지나면서 변동되는 추이를 밸런스로 보여줄때 쓸 수 있다.

select msg_id, base_amt,
sum(base_amt) over(order by msg_id rows between unbounded preceding and current row)
from cdr_data ;

2012년 1월 17일 화요일

[Excel] 엑셀 함수안에서 두가지 이상 조건 걸기

만약 IF 함수안에서 A는 B보다 크면서 C보다도 큰경우를 만들고 싶다면

if(AND(AND(A>B),AND(A>C)), TRUE, FALSE)