-2
try {
    String strQry= "CREATE TABLE IF NOT EXISTS ERROR_DETAIL (\"SNO\"NUMBER(16,0),\"TABLE_NAME\"  VARCHAR2(32 BYTE),\"ERROR_DESC\" VARCHAR2(255 BYTE),\"XCOORDINATE\" FLOAT(126),\"YCOORDINATE\" FLOAT(126),\"STATUS\"  VARCHAR2(30 BYTE),\"COMMENT\" Varchar2(255 Byte),PRIMARY KEY (\"TABLE_NAME\", \"ERROR_DESC\") ENABLE);";
    stmt = con.createStatement();
    stmt.execute(strQry);

} catch (Exception e) {
    e.printStackTrace();
}

エラーを与えるこのコード:

java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option

しかし、同じクエリがOracleで正しく機能しています

4

2 に答える 2

0

変数の内容を出力するstrQryと、それが無効であることがわかります。

  • 列名を二重引用符で囲む必要はありません
  • 各列名とそのタイプの間にスペースが必要です
  • クエリの最後にセミコロンを付けないでください

executeUpdate()また、 and は使わないほうがいいと思いますexecute()

于 2012-06-07T13:01:53.460 に答える
0

以下のコードを使用してみてください。

try {
    String strQry= " CREATE TABLE IF NOT EXISTS ERROR_DETAIL (SNO NUMBER(16,0),TABLE_NAME VARCHAR2(32 BYTE),ERROR_DESC VARCHAR2(255 BYTE),XCOORDINATE FLOAT(126),YCOORDINATE FLOAT(126),STATUS VARCHAR2(30 BYTE),COMMENT Varchar2(255 Byte),PRIMARY KEY (TABLE_NAME, ERROR_DESC) ENABLE)";
    stmt = con.createStatement();    
    stmt.execute(strQry);                    

} catch (Exception e) { e.printStackTrace(); }

;変更は、内側の " (つまり、指定されたコードでは ENABLE です);"; を削除するだけです。

ENABLE に変更しています)";

于 2014-11-06T08:14:41.760 に答える