Sql Error: ORA-00933: SQL command not properly ended
⚡TLDR
Facing ORA-00933 error? Scrutinize your SQL command's syntax. Oracle doesn't entertain LIMIT, it's fond of ROWNUM. Got it?
See any extra semicolons? Kick them out. Embrace the Oracle's dialect.
Common mistakes and their fixes
Unwanted semicolons: More is not always merrier
Semicolons should signal the end of the party (i.e., the SQL command). Oracle throws a fit (the **ORA-00933** error) with surprise semicolons gatecrashing the command.
```sql
SELECT column FROM table; WHERE condition; -- Suddenly, a wild semicolon appears. This won't do.
SELECT column FROM table WHERE condition; -- Oracle approves ✅
Syntax structure: Oracle's unique taste
In Oracle's universe, SQL joins ask for **sub-selects** or **inline views**. No more `JOIN` remark please, it's not a friendship band.
```sql
UPDATE (SELECT e.salary, d.budget FROM employees e, departments d WHERE e.department_id = d.id) t SET t.salary = t.salary * 1.1; -- Let's give everyone a raise! Oracle style.
Reserved words and quote-quandary
Don't call Oracle's **reserved words** your columns, it doesn't like to share names. Keep those single quotes in checks, escape if they are part of string literals.
```sql
UPDATE employees SET "GROUP" = 'Support' WHERE id = 1; -- GROUP needs a VIP entry, hence quoted
UPDATE employees SET comments = 'O''Reilly''s offer' WHERE id = 1; -- O'Reilly is at the party, escaping the quote crashers
Kicking out the ORA-00933 error
Precision in identifiers
Ensure your **column and table names** carry right passport. A wrong or misspelled name could have Oracle confused about the journey's end.
### Permissions card
Do you have the Golden ticket (the permissions for the operation)? You might be right about the road, but you can't drive without a license.
Debugging: The detective game
Be Sherlock in your code, have a robust **error handling** and some strategic **debugging** breadcrumbs throughout your command line. Hunt the culprit in your SQL command.
## Advanced damage control
### Mindful use of sub-queries
Tag your sub-queries with alias, trust me it makes them look savvy and easy to spot in the WHERE-class crowd.
Oracle SQL Developer: The quirks
In the world of **Oracle SQL Developer**, semicolons are VIPs (Very Intricate Parts). Use only to announce the end of the command, else get ready for a **ORA-00933** surprise.
```sql
BEGIN
UPDATE employees SET salary = salary * 1.05; -- Everyone's getting a raise!
-- Semicolon audition not needed here inside PL/SQL block
END;
Knowledge is power: Use external resources
Perks of the internet - You can swim through several discussions, in-depth bug fixes and best practices to fix ORA-00933 in your specific context.
Linked
Was this article helpful?