우리는 원격 시스템에서 제공하는 저장 프로 시저를 사용하고 있습니다. 테스트를 위해 개발 컴퓨터에서이 프로 시저를 호출합니다. 이제 문제는 제가 두꺼비에서 절차를 호출하는 경우입니다, 다 괜찮습니다. 그러나 SQL Developer을 사용하여 호출하면 오류가 발생합니다.to_char은 프로 시저가 호출되는 위치에 따라 다른 출력을 생성합니다.
디버깅하고 디버깅하여 발견했습니다. 절차에서 만료 날짜가 생성되어 웹 서비스로 전달됩니다 (이유는 묻지 않음).
다음날짜 생성을 담당 라인은 다음과 같습니다
vt_User.EXPDATE := TO_DATE('01.01.2025', 'dd.mm.yyyy');
vs_Value := to_char(vt_User.EXPDATE, 'YYYY-MM-DD"T"HH24:MI:SSTZR');
vs_Value을 두꺼비에서 호출 할 때 같이 생성됩니다
2025-01-01T00:00:00+02:00
하지만 SQL 개발자에서 호출하는 경우 예 :
2025-01-01T00:00:00EUROPE/ATHENS
이 행을 제외한 모든 항목이 완전히 동일합니다. 나는 NLS_LANG를 설정하고, 세션을 변경하는 등 많은 다른 접근법을 시도했지만 아무런 결과도 얻지 못했습니다.
나는이 절차를 Java 코드에서 호출하면 동일한 문제가 발생하기 때문에이 문제를 해결해야합니다. 이것이 주요 문제입니다.
나는 두꺼비와 SQL 개발자, 자바 코드에 대한 얇은 드라이버에 대한 TNS를 사용하여 원격 데이터베이스에 연결합니다.
vt_User.EXPDATE의 유형은 무엇입니까 :
–그것은'TIMESTAMP WITH TIME ZONE'입니다. – SelimOber
그리고 다음과 같이하면 얻을 수있는 것 : sessiontimezone, dualtime에서 dbtimezone을 선택하십시오; –