본문 바로가기

Server Oriented

(191)
to_char(숫자,'fm90.0') 오라클 형식 to_char(숫자,Formatter) 함수에서,9 는 숫자를 표시하되 값이 없으면 null 처리,0 은 숫자를 표시하되 값이 없으면 0 처리,fm 은 trim() 을 to_char() 밖에 한 번 더 씌워주는 효과. to_char(5.2, '9.9') 는 '5.2' 를 출력. to_char(5.2, '0.0') 을 해도 '5.2' 라고 출력. 그러면, to_char(5.2, '9') 라고 하면 어떻게 찍힐까..? '5' 만 찍힘. to_char(5.2, '0') 도 '5'.to_char(5.5, '9') 라고 하면..? 5.5 의 반올림으로 표시하려 하므로, '6' 이라고 찍힘. to_char(5.5,'0') 도 '5'.Formmater 에서 설정된 소숫점 이하 마지막 자리에서 그 위로 반올림 하는 것..
하나의 트랜잭션 안에서 sysdate 가 다른 값이 세팅될 수 있다..? .java 에서 하나의 트랜잭션으로 최초와 마지막 insert 문에 sysdate 를 넣는 문장이 있고,첫 insert 문장이 실행되고 마지막 insert 문장이 실행될 때 1초의 시차가 있었다면..첫번째 insert 문장의 sysdate 항목과 마지막 insert 문장의 sysdate 항목은 1초의 차이가 난다. 그리고, 첫번째 insert 문장의 sysdate 가 마지막 insert 문장의 sysdate 항목 보다 빠르다고는 할 수 없다.이것은 DBMS 가 어떻게 처리했느냐에 따라 다르다.특히, DBMS 의 CPU 가 여럿이라면.. 병렬 처리의 폐해(?)가 적용될 수 있으므로 유의. 이를 동일 시각으로 맞춰주려면,트랜잭션 초입에 sysdate 를 select 해서 그 값을 가지고 있다가,매 문장에서 ..
스크레치 복권 발급과 관련된 단상 1. 복권 경품 DB 를 만들어서.. - 각 경품에 대하여 확보된 총 수량 - 관리자가 세팅하기에 따라 현재 오픈될 수 있는 수량 - 경품 코드와 경품 명칭 (경품 코드는 일련번호로 따는 것이 덜 번거로움) - 꽝도 하나의 경품으로 세팅 - 경품도 그룹이 있을 터인데, 이를테면 물품과 포인트 등등으로 구분 2. 경품은 난수로 일차 세팅 (seed 에 해당) - round(dbms_random.value(경품코드1, 경품코드2)) 상기 1에서 그룹을 잡은 경품 코드별로, 로그인 했을 때 발급되는 복권에 대한 경품 코드를 난수로 체크, 특정 이벤트(이를테면 회원가입, 물건 구입 등등)에 해당하여 발급되는 복권에 대한 경품 세팅 3. 사용자가 방문시 seed 를 체크하고 기타 사항을 확인하여 복권을 발급 - ..
프로시저 call 시 어떤 Statement 를 사용해야 할까..? JDBC 버전에 따라서는,PreparedStatement 로 OUT 파라미터가 없는 Procedure 를 호출했을 때,return 값이 항상 0 인 경우가 발생하므로..Exception 이 발생하지 않는 경우에는 성공한 것으로 간주.Clob 을 DB 에 넣을 때, select for update 를 사용할 때 리턴값을 체크하지 않는 것과 유사.-------------------------------------------------------------------------------------------------- 프로시저를 call 할 때 항상 CallableStatement 를 사용해 왔었는데..오늘 우연찮게 PreparedStatement 를 사용해도 정상 작동.. ㅠ.그러면, Statement ..
윤년 추출 여기선, last_day() 와 add_months() 를 이용한 방법을 확인해 본다. last_day() 는 해당 월의 마지막 일자를 세팅해 주므로, 2월에 적용하면 됨.select ymd from (select to_char(last_day(to_date((to_char(sysdate,'yyyy')-rownum+1)||'02', -- -rownum 이면 이전년도, +rownum 이면 이후년도 'yyyymm')),'yyyymmdd') ymd from w2_article where rownum < 1000 ) where substr(ymd,5,4)='0229' -- 윤년; 1/31 일자에 add_months 로 1개월을 추가하면 2월 말일을 세팅해주는 것을 활용.select ymd from (select..
SQL 쿼리 튜닝 1. like사용해도 퍼포먼스에 영향을 주지 않을 때만 사용하자.like 보다는 between ~ and ~ 또는 비교 연산자를 사용해서 튜닝
cascade constraint purge http://elephant11.tistory.com/51 이런 스타일의 DB 작업시에는,마지막 버튼을 클릭하기 전에 다시 한 번 작업을 제대로 실행하는 것인지 점검할 필요가 있다.
리눅스에서 OS 상의 문자셋 변경 http://blog.naver.com/kmi79ya/220892291759