2016-07-12 12 views
5

का सटीक परिणाम पुनर्प्राप्त नहीं करता है, मैं अपने आवेदन से ओरेकल तालिका की जानकारी पढ़ने की कोशिश कर रहा हूं। तालिका विवरण प्राप्त करने के लिए, मैं अपने आवेदन पर इस क्वेरी निष्पादित करें:तैयार कथन एसक्यूएल

SELECT DBMS_METADATA.GET_DDL('TABLE', 'CONTRACT_TABLE' ,'SCHEMA_NAME') FROM DUAL 

यहाँ कोड ब्लॉक कि निष्पादित करता है क्वेरी:

 PreparedStatement preparedStatement = null; 
     ResultSet resultSet = null; 

     String sql = "SELECT DBMS_METADATA.GET_DDL('TABLE', 'CONTRACT_TABLE' ,'SCHEMA_NAME') FROM DUAL"; 
     preparedStatement = connection.prepareStatement(sql); 
     resultSet = preparedStatement.executeQuery(); 

     if (resultSet.next()) { 
      Clob clob = resultSet.getClob(1); 
      String str = clob.getSubString(1, (int)clob.length()); 
      return str;    
     } else { 
      throw new DBPlatformException("Object not available [Schema: " 
        + schema + "].[Name: " + objectName + "]!"); 
     } 

जब मैं डेटाबेस पर सीधे एसक्यूएल चलाने मैं इस परिणाम मिलता है :

CREATE TABLE "SCHEMA_NAME"."CONTRACT_TABLE" 
    ( "CONTRACT_ID" NUMBER, 
    "START_DATE" DATE, 
    "END_DATE" DATE 
    ) 
    PARTITION BY HASH ("CONTRACT_ID") 
(PARTITION "P01" , 
PARTITION "P02" , 
PARTITION "P03" , 
PARTITION "P04" , 
PARTITION "P05") 
0:

CREATE TABLE "SCHEMA_NAME"."CONTRACT_TABLE" 
    ( "CONTRACT_ID" NUMBER, 
    "START_DATE" DATE, 
    "END_DATE" DATE 
    ) PCTFREE 0 PCTUSED 0 INITRANS 1 MAXTRANS 255 
COMPRESS FOR QUERY HIGH NOLOGGING 
    STORAGE(
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "TMP_SPACE" 
    PARTITION BY HASH ("CONTRACT_ID") 
(PARTITION "P01" SEGMENT CREATION DEFERRED 
    TABLESPACE "TMP_SPACE" 
COMPRESS FOR QUERY HIGH , 
PARTITION "P02" SEGMENT CREATION DEFERRED 
    TABLESPACE "TMP_SPACE" 
COMPRESS FOR QUERY HIGH , 
PARTITION "P03" SEGMENT CREATION DEFERRED 
    TABLESPACE "TMP_SPACE" 
COMPRESS FOR QUERY HIGH , 
PARTITION "P04" SEGMENT CREATION DEFERRED 
    TABLESPACE "TMP_SPACE" 
COMPRESS FOR QUERY HIGH , 
PARTITION "P05" SEGMENT CREATION DEFERRED 
    TABLESPACE "TMP_SPACE" 
COMPRESS FOR QUERY HIGH) 
    PARALLEL 32 

जब मैं अपने आवेदन चलाने के लिए, इसे इस तरह परिणाम देता है

परिणामस्वरूप कि मेरे आवेदन रिटर्न में कम जानकारी है। मुझे यह जानने की जरूरत है कि तालिका समानांतर है या नहीं, लेकिन मेरा आवेदन मुझे वह जानकारी नहीं दे सकता है।

मैं यह पता लगाने की कोशिश कर रहा हूं कि क्वेरी के परिणाम अलग क्यों हैं और मैं समांतर जानकारी कैसे प्राप्त कर सकता हूं।

+0

जेडीबीसी डीडीएल सीमाएं, शायद? – fge

+0

मुझे सही करें अगर मैं गलत हूं। मुझे सीधे जेडीबीसी पर डीडीएल जानकारी नहीं मिल रही है। डीडीएल जानकारी प्राप्त करने के लिए, मैं एक क्वेरी निष्पादित करता हूं और परिणाम पढ़ता हूं। मुझे नहीं लगता कि जेडीबीसी डीडीएल सीमाओं के पास इस समस्या से कुछ लेना देना है। – seckinozden

उत्तर

1

जावा में आप बयान से पहले

begin 
    DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',TRUE); 
    DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'TABLESPACE',TRUE); 
    DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',TRUE); 
end; 
/

निष्पादित और यदि परिणाम परिवर्तन देखने की कोशिश करें।

+0

उत्तर के लिए धन्यवाद @Evgeniy K. मैंने कोशिश की लेकिन कुछ भी नहीं बदला :( – seckinozden

+0

हाय फिर से @Evgeniy के। आपका उत्तर मेरी समस्या का समाधान है। मुझे लगता है कि एक कोड टुकड़ा है जो निष्पादन के दौरान सत्र पैरामीटर सेट करता है मेरा आवेदन। मैंने कोड के उस हिस्से को अपडेट किया है। अब मुझे पूरा टेबल विवरण मिल सकता है जैसा कि मैंने उम्मीद की थी। आपकी मदद के लिए धन्यवाद :) – seckinozden

संबंधित मुद्दे