2011-03-13 5 views
3

우리 회사의 제품에서는 데이터베이스에서 한 번에 한 페이지 씩 결과를 검색합니다. 이 때문에 모든 필터링 및 정렬은 데이터베이스에서 수행되어야합니다. 문제 중 하나는 코드 값입니다. 필터링 및 정렬이 제대로 작동하려면 코드 값을 쿼리의 로캘 별 레이블로 변환해야합니다.오라클 연결 로케일 설정

내 계획은 다음과 유사한 테이블을 사용하는 것입니다 t_code_to_label ( 타입 VARCHAR2 (10), 로케일 VARCHAR2 (10), 코드 VARCHAR2 (10), 라벨 VARCHAR2 (50) ) 처음 세 개의 열은 기본 (고유 한) 키입니다. 이 테이블을 사용하는 경우

, 당신은 문제가 currentLocale은() 내가 만들어 뭔가 있다는 것이다이

select ent.name, ent.ent_type, entlabel.label as ent_type_label from t_entitlements ent join t_code_to_label entlabel on entlabel.type='entlabel' and entlabel.locale=currentLocale() and entlabel.code=ent.ent_type

같은 것을 볼 것입니다. JDBC 연결의 자바 측에서 간단한 함수로 Oracle 측에서 읽을 수있는 Connection 객체의 로케일을 설정하는 방법은 무엇입니까? 이상적으로 이것은 오라클의 진정한 로케일 지원이지만, 나는 그런 것을 발견 할 수 없다.

Oracle 10g 및 11g를 사용하고 있습니다.

답변

6

오라클 데이터베이스의 NLS_LANGUAGE 설정에 대해 말씀해 주시겠습니까? 클라이언트 측에서 오라클 데이터베이스가 특정 NLS_LANGUAGE의 사용을 지시하고 싶습니까? 당신은 당신이 뭔가 할 수 할 수있는 "모든 미국의"세션하려면 Set Oracle NLS_LANGUAGE from java in a webapp

: 다음

어쩌면이 일 것

ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' 
        NLS_CURRENCY= '$' NLS_ISO_CURRENCY= 'AMERICA' 
        NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN' 
        NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' 
        NLS_SORT= 'BINARY' 
+0

을 그리고 당신은 귀하의 쿼리에서 값을 읽을 수 있습니다 함수는 다음과 같다 :'sys_context ('USERENV', 'NLS_SORT')' –