title: java.sql.SQLException: ORA-00936: missing expression
body: <p>Below I am creating table.</p>
  
  <pre><code>    public static final String CREATE_SQL = "CREATE TABLE " +DATABASE_TABLE +
          "(ID number(10,0), " +
          " CGUID VARCHAR(255), " + 
          " PGUID VARCHAR(255), " + 
          " SGUID VARCHAR(255), " + 
          " USERID VARCHAR(255), " +
          " ULOC VARCHAR(255), " +
          " SLOC VARCHAR(255), " +
          " PLOC VARCHAR(255), " +
          " ALOC VARCHAR(255), " +
          " SITEID VARCHAR(255), " +
          " ATTRIBUTEID VARCHAR(255), " +
          " ATTRIBUTEVALUE VARCHAR(255), " +
          " PRIMARY KEY ( ID ))";
  </code></pre>
  
  <p>This is the below UPSERT_SQL query when I am trying to update my database table I am always getting- <strong>java.sql.SQLException: ORA-00936: missing expression</strong>
  . I checked my SQL, I am not able to find where the expression is missing. Is something wrong with the below SQL?</p>
  
  <pre><code>public static final String UPSERT_SQL = "MERGE INTO " +DATABASE_TABLE+ " USING (  SELECT ? AS ID, " +    // We will maybe add this record
      "                ? AS CGUID, " +
      "                ? AS PGUID, " +
      "                ? AS SGUID, "+
      "                ? AS USERID, "+
      "                ? AS ULOC, "+
      "                ? AS SLOC, "+
      "                ? AS PLOC, "+
      "                ? AS ALOC, "+
      "                ? AS SITEID, "+
      "                ? AS ATTRIBUTEID, "+
      "                ? AS ATTRIBUTEVALUE, "+
      "                FROM dual ) maybe "+
      "   ON (maybe.ID = "+DATABASE_TABLE+".ID) "+
      "         WHEN MATCHED THEN "+
              // We only need update the fields that might have changed
      "       UPDATE SET " +DATABASE_TABLE+ ".ULOC = maybe.ULOC, " +DATABASE_TABLE+ ".SLOC = maybe.SLOC, " +DATABASE_TABLE+ ".PLOC = maybe.PLOC, " +DATABASE_TABLE+ ".ALOC = maybe.ALOC "+
      "         WHEN NOT MATCHED THEN "+
         // Insert new record
      "   INSERT VALUES (maybe.ID, maybe.CGUID, maybe.PGUID, maybe.SGUID, maybe.USERID, maybe.ULOC, maybe.SLOC, maybe.PLOC, maybe.ALOC, maybe.SITEID, maybe.ATTRIBUTEID, maybe.ATTRIBUTEVALUE)";
  </code></pre>
  
  <p>And from below I am executing that UPSERT_SQL Statement.</p>
  
  <pre><code>LnPDataConstants.PSTMT = LnPDataConstants.DB_CONNECTION.prepareStatement(LnPDataConstants.UPSERT_SQL); // create a statement
                          LnPDataConstants.PSTMT.setInt(1, (int) ind);
                          LnPDataConstants.PSTMT.setString(2, LnPDataConstants.CGUID_VALUE);
                          LnPDataConstants.PSTMT.setString(3, LnPDataConstants.PGUID_VALUE);
                          LnPDataConstants.PSTMT.setString(4, LnPDataConstants.SGUID_VALUE);
                          LnPDataConstants.PSTMT.setString(5, LnPDataConstants.UID_VALUE);
                          LnPDataConstants.PSTMT.setString(6, LnPDataConstants.ULOC_VALUE);
                          LnPDataConstants.PSTMT.setString(7, LnPDataConstants.SLOC_VALUE);
                          LnPDataConstants.PSTMT.setString(8, LnPDataConstants.PLOC_VALUE);
                          LnPDataConstants.PSTMT.setString(9, LnPDataConstants.ALOC_VALUE);
                          LnPDataConstants.PSTMT.setString(10, LnPDataConstants.SITEID_VALUE);
                          LnPDataConstants.PSTMT.setString(11, "10200");
                          LnPDataConstants.PSTMT.setString(12, attrValue1.toString().split("=")[1]);
                          LnPDataConstants.PSTMT.executeUpdate();
  </code></pre>