私のアプリケーションからOracleテーブル情報を読み込もうとしています。テーブルの説明を取得するには、私は自分のアプリケーションでこのクエリを実行します。ここではPreparedステートメントがSQLの正確な結果を取得しません
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 + "]!");
}
私はデータベースに直接SQLを実行すると、私はこの結果を得ます:
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
私は自分のアプリケーションを実行すると、それはこのように結果を返します:
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")
私のアプリケーションが返す結果は、より少ない情報しか持っていません。私はテーブルが平行かどうかを知る必要がありますが、私のアプリケーションは私にその情報を与えることはできません。
私は、クエリの結果が異なる理由と、どのようにして並列情報を取得できるのかを把握しようとしています。
JDBC DDLの制限は多分ですか? – fge
私が間違っている場合は私を訂正してください。私はJDBC上で直接ddl情報を取得していません。 ddl情報を取得するために、私はクエリを実行し、結果を読み取ります。私はJDBCのDDLの制限はこの問題とは関係ないと思います。 – seckinozden