My Insight

,

Oracle – ORA-00922: missing or invalid option

Hello There!

I recently did test in my Java code to have a SQL statement for copy table from TABLE 1 to TABLE 2. I need both tables identical during the application goes boot-up. But, suddenly i got ORA-00922: missing or invalid option.

Oracle - ORA-00922: missing or invalid option
1. ORACLE DOCUMENTATION

Based on Oracle error documentation ORA-00922 says :

CauseAn invalid option was specified in defining a column or storage clause. The valid option in specifying a column was NOT NULL to specify that the column cannot contain any NULL values. Only constraints may follow the datatype. Specifying a maximum length on a DATE or LONG datatype also causes this error.
ActionCorrect the syntax. Remove the erroneous option or length specification from the column or storage specification.

At the action clue, there is a phrase that says, ‘Correct the syntax.’ This seems quite odd as the query statement appears to be fine.

I went down to run the query via Oracle Developer to fulfil my curiosity to test my query directly. You know what, It was running ok though 🧐.

As you can see, the table DUMMY_BACKUP is created. I checked my code, it was :

String sql = String.format("CREATE TABLE %s FOR EXCHANGE WITH TABLE %s;", detinationTable, sourceTable);
stmt.executeUpdate(sql);
2. WHAT IS THE SOLUTION THEN?

After i tweak my code and noticed there is a semicolon of the statement and did removed semicolon(;) at the end of SQL string.

Oracle SQL doesn’t have statement terminators. Client tools and PL/SQL solely use semicolons to separate SQL statements, such as when executing scripts with SQL*Plus’s start command, but they are not part of the SQL statement itself.

In fact, Oracle will throw an ORA-00922 error when it tries to parse such an SQL.

String sql = String.format("CREATE TABLE %s FOR EXCHANGE WITH TABLE %s", detinationTable, sourceTable);
stmt.executeUpdate(sql);

I re-compile the java code and try to run it again, the result of ORA-00922 has been disappeared. The code worked as expected.

It’s actually simple error, but you will got confuse if there is no clue about it 😎.

However, if you’d like to view my other note related to Oracle and REST API, you can visit this.

That’s all folks! Happy coding! 🥰😍

Note : Java 17 and Oracle 19c


Leave a Reply

Your email address will not be published. Required fields are marked *