All posts by poteto7

RPAD와 TO_MULTI_BYTE

전문전송시 베트남어를 처리할 때 문제가 있음

,rpad(NVL(EMPLOYEE_NUMBER,’ ‘),10,’ ‘) AS EMPLOYEE
,SUBSTRB(RPAD(NVL(TO_MULTI_BYTE(EMPLOYEE_NAME),’ ‘),30 ,’ ‘) || RPAD(‘ ‘,30,’ ‘),1,30) AS EMPLOYEE_NAME
,SUBSTRB(RPAD(NVL(TO_MULTI_BYTE(EMPLOYEE_ENGLISH_NAME),’ ‘),150 ,’ ‘) || RPAD(‘ ‘,30,’ ‘),1,30) AS EMPLOYEE_ENGLISH_NAME

참고.
TO_MULTI_BYTE(), RPAD() 전각, 전문 채우기(http://dobioi.com/453)
PL/SQL 문자열 함수 정리 (http://deviant86.tistory.com/m/post/456)

WM_CONCAT 과 LISTAGG

oracle 10g
SELECT A2.TABLE_NAME, WM_CONCAT(A2.COLUMN_NAME) AS “COLUMN_NAME”
FROM ALL_CONSTRAINTS A1, ALL_CONS_COLUMNS A2
WHERE UPPER(A1.TABLE_NAME) LIKE ‘TB_M30%’
AND UPPER(A1.OWNER) = ‘MESUSER’
AND A1.TABLE_NAME = A2.TABLE_NAME
AND A1.OWNER = A2.OWNER
AND A1.CONSTRAINT_NAME = A2.CONSTRAINT_NAME
AND A1.CONSTRAINT_TYPE = ‘P’
GROUP BY A2.TABLE_NAME

———————————————————————-

oracle 11g
SELECT A2.TABLE_NAME, LISTAGG(A2.COLUMN_NAME, ‘,’) WITHIN GROUP (ORDER BY A2.POSITION) “COLUMN_NAME”
FROM ALL_CONSTRAINTS A1, ALL_CONS_COLUMNS A2
WHERE UPPER(A1.TABLE_NAME) LIKE ‘TB_M30%’
AND UPPER(A1.OWNER) = ‘MESUSER’
AND A1.TABLE_NAME = A2.TABLE_NAME
AND A1.OWNER = A2.OWNER
AND A1.CONSTRAINT_NAME = A2.CONSTRAINT_NAME
AND A1.CONSTRAINT_TYPE = ‘P’
GROUP BY A2.TABLE_NAME

ORA-01861: literal does not match format string

오렌지에서는 정상적으로 실행되는데 서버올려놓고 실행하면 발생하는 문제
java.sql.SQLException: ORA-01861: literal does not match format string

to_char(add_months(pln_horizon_str_dt,1),’YYYY’)

to_char, to_date를 사용할 때, 두번 째 인자값을 명시하지 않으면
DBMS의 NLS_DATE_FORMAT 값에 따라 위의 에러가 갑툭튀 한다고 한다.

그래서 쿼리를 아래와 같이 변경했더니 제대로 돌아간다.
to_char(add_months(to_date(pln_horizon_str_dt,’yyyymmdd’),1),’YYYY’)

「낚시질」 마종기

물고기는 평생 헤엄만 치면서

왜 사는가.

낚시질하다

문득 온몸이 끓어오르는 대낮,

더 이상 이렇게 살 수만은 없다고

중년의 흙바닥에 엎드려

물고기같이 울었다.

– 마종기, 「낚시질」에서

중년이라는 단어가 낮설지 않은 나이가 됬다
“중년의 흙바닥”이라니 전혀 연결되지 않을 것 같은 이 두 단어가
묘하게도 나를 이끈다

weblogic에서 jsp파일의 중간 컴파일된 java파일 설정 및 생성위치

jsp파일을 was에 올리면 사용자 요청이 발생했을 때, 컴파일을 해서 class파일을 생성한다.
tomcat에서는 그것을 이용해서 컴파일된 페이지를 열어서 소스를 확인하고 디버깅을 했었는데
weblogic을 사용하면서 이 기능을 찾지 못했었다.

weblogic 설정->배치->해당배치서비스->구성->일반 탭에서 생성된 jsp 유지를 체크하면
../domains/CMDomain/servers/도메인/tmp/_WL_user/배치이름/gvf0l1/jsp_servlet
아래에 jsp소스의 중간컴파일 java파일과 컴파일된 class 파일을 확인할 수 있다.

오라클 테이블 정보 가져오기

select * –테이블정보
from all_tables
where tablE_name = ‘TB_M30_PRD_RSL’
;

select * — 컬럼정보
from all_tab_columns
where tablE_name = ‘TB_M30_PRD_RSL’
;

select * — 컬럼코멘트
from all_COL_COMMENTS
where tablE_name = ‘TB_M30_PRD_RSL’
;

select * — 테이블코멘트
from all_TAB_COMMENTS
where tablE_name = ‘TB_M30_PRD_RSL’
;

SELECT *
FROM all_constraints cons
WHERE CONSTRAINT_TYPE = ‘P’
;

SELECT — 테이블의 PK컬럼
cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cons.constraint_type = ‘P’
AND cons.constraint_name = cols.constraint_name
AND CONS.TABLE_NAME = ‘TB_M30_PRD_RSL’
ORDER BY cols.table_name, cols.position
;

ORA-01861: literal does not match format string

http://whonl.egloos.com/4807974

ORA-01861: literal does not match format string
이 에러가 미친듯이 발생해서 어떤 문제지 찾아봤음.

위의 링크가면 친절하게 설명되어 있다.

정리하자면 자바에서 쿼리실행시 오라클함수 안에 오라클변수를
자동으로 형변환 하지 않으므로 발생하는 문제이므로

명시적으로 형변환을 하도록 수정하면 문제가 해결된다.

select *
from prd_rsl as of timestamp to_timestamp(‘20141021140000′,’yyyymmddhh24miss’)
where LOT_NO = ‘S000014900′
;

select *
from prd_rsl as of timestamp(systimestamp-interval ’30’ minute)
where LOT_NO = ‘S000014900’
;

특정시간이나 30분전으로 선택해서 이전의 데이터를 볼 수 있다.