Oracle invalid identifier doesnt understand string

Posted on

Oracle invalid identifier doesnt understand string – This article will take you through the common SQL errors that you might encounter while working with java, sql,  database. The wrong arrangement of keywords will certainly cause an error, but wrongly arranged commands may also be an issue. SQL keyword errors occur when one of the words that the SQL query language reserves for its commands and clauses is misspelled. If the user wants to resolve all these reported errors, without finding the original one, what started as a simple typo, becomes a much bigger problem.

SQL Problem :

I’m having an issue with my query not working. This is the command variable.

When it executes it should be retrieving the tuples that have BSc as their degree. I have tested this in oracle directly and the query returns these. It is identical to the command statement.

When I print out command, the line looks exactly the same as my command that worked in oracle.

SELECT distinct fname, lname, student_id FROM student where degree='BA';

Yet, it should be printing out to the screen. The tables are loaded into oracle already.

I’ve been racking my brain with this issue but can’t seem to find a fix!

The error I keep getting is:
ORA-00911: invalid character

What I do is I store in degree the result from scanner which is a string. So concatenating it in the command variable shouldn’t make an issue — the query looks identical to what works in oracle.

Could it be because it wants a char instead of a string? If it does, then how would I get it to make “BSc” as a char? Concatenating chars sounds dumb.

Relevant code below:

 private String getDegree() {
  Scanner scan = new Scanner(;
  System.out.println("Please enter degree code (either BA or BSc)");


//get the degree name
        String degree = getDegree();

        //get statement and execute appropriate select
        Statement stmt = con.createStatement();
        String command = "SELECT distinct fname, lname, student_id FROM student"+
           " where degree='"+ degree + "';";
        ResultSet result = stmt.executeQuery(command);

        //determine number of columns
        ResultSetMetaData metadata = result.getMetaData();
        int columns = metadata.getColumnCount();

        //print heading
        System.out.println("nFNAME        LNAME         STUD_ID");

        //loop through result and print columns

        while ({
           for (int i=1; i <=columns; i++){


Solution :

In JDBC your SQL statement should not be terminated by semicolon.


String command = "SELECT distinct fname, lname, student_id FROM student"+
       " where degree='"+ degree + "';";


String command = "SELECT distinct fname, lname, student_id FROM student"+
       " where degree='"+ degree + "'";

Finding SQL syntax errors can be complicated, but there are some tips on how to make it a bit easier. Using the aforementioned Error List helps in a great way. It allows the user to check for errors while still writing the project, and avoid later searching through thousands lines of code.

Leave a Reply

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