Oracle 데이터베이스에서 Java로 데이터를 가져 오는 데 문제가 있습니다. 실제 값 대신 데이터베이스에서 3 개의 물음표 만 반환됩니다. 다음과 같이 jdbc를 사용하여 Oracle에서 사용자 정의 형식 데이터 가져 오기
먼저 나는 내 타입을 만든 : SQL 개발자의 열 출발에 대한SELECT del.stop_name AS direction,
del.departures
FROM
(SELECT mvv.STOP_NAME,
mvv.stop_id,
CAST(COLLECT(SUBSTR(departure_time,1,5)
ORDER BY departure_time) AS varchar2_ntt) departures
FROM stop_times st,
MV_TRIP_V_SMER mvv,
trips t
LEFT JOIN calendar c
ON c.service_id= t.service_id,
routes r,
mv_rezimi_za_postajni_vr pvr
WHERE mvv.trip_id =st.trip_id
AND st.trip_id =t.TRIP_ID
AND r.route_id =t.route_id
AND pvr.service_id=c.service_id
AND pvr.workday=1
AND st.stop_id ='2206100000201'
GROUP BY mvv.STOP_NAME,
mvv.stop_id
) DEL
결과가 잘 보이는 :
create or replace TYPE varchar2_ntt AS VARRAY(5000) OF varchar2(200);
는 그럼 난 내 SQL을 썼다.
while (rs.next()){
ARRAY departures_a =((OracleResultSet)rs).getARRAY("departures");
System.out.println ("Array is of type "+departures_a.getSQLTypeName());
System.out.println ("Array is of length "+departures_a.length());
String[] departures_arr = (String[]) departures_a.getArray();
for (int n=0; n<departures_arr.length; n++){
System.out.println("departure "+n+":"+ departures_arr[n]);
}
}
콘솔 출력 : 결과를 얻으려고 노력 자바 메신저에서
SHEMA.VARCHAR2_NTT('13:15','16:25','18:15','19:45')
잘못하고 무엇 메신저
Array is of type SHEMA.VARCHAR2_NTT
Array is of length 4
departure 0:???
departure 1:???
departure 2:???
departure 3:???
? 왜 실제 값 대신에 물음표가 있습니까?
("순수 JDBC", 아니 오라클 클래스) = rs.getArray AR'배열 ("출발"); 문자열 [] 요소 = (String []) ar.getArray();' –
코드를 사용하여 Oracle 클래스에서도 작동합니다. 11.2.0.3, ojdbc6.jar (및 5와 7). 아마도 호환되지 않는 드라이버 버전을 사용하고 있습니까? 'departure_time '은 어떤 데이터 타입입니까? –
예 순수 JDBC에서 작동하지만 두 가지를 모두 시도했지만 차이점은 없습니다. – bakus33