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 中正常工作
打印strQry
变量的内容,您将看到它无效:
- 列名两边不需要双引号
- 每个列名及其类型之间应该有一个空格
- 查询末尾不应有分号
此外,我认为您应该使用executeUpdate()
而不是execute()
.
尝试使用以下一段代码。
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);" 中的;
;
我正在将其更改为启用)";