Your T-SQL instincts now have a PL/SQL translation.
What you covered
💡 The Bottom Line, one more time
VARCHAR/DECIMAL/DATETIME2 become
VARCHAR2/NUMBER/DATE (and Oracle's DATE
always carries a time component), +/ISNULL become
||/NVL, and a plain SELECT with no table needs
FROM DUAL tacked on because Oracle's grammar demands it. IDENTITY
columns give way to standalone SEQUENCE objects with NEXTVAL/
CURRVAL (though 12c+'s GENERATED ALWAYS AS IDENTITY is a close
bridge), schema-qualified standalone procedures give way to PL/SQL packages and
DECLARE/BEGIN/END blocks — and the change most likely to
bite you in production, Oracle does not autocommit by default, so a batch of
UPDATEs sits uncommitted until you say COMMIT. None of your SQL
Server instincts about relational design are wrong on Oracle; the engine underneath is just
wired slightly differently, and now you know where.
What's next
This guide covered the core language mapping. From here, the natural next steps are:
- Oracle-specific PL/SQL features — packages with private state, collections
(
VARRAY, nested tables, associative arrays), bulk operations (BULK COLLECT/FORALL), and cursors with explicit%ROWTYPErecords are worth a dedicated look, since none of them map one-to-one onto T-SQL equivalents. - Oracle certification-adjacent topics — if you're heading toward an Oracle Database SQL or PL/SQL certification track, this guide covers the syntax delta; the exam-style material goes deeper on things like execution plans, indexing strategy, and PL/SQL exception handling that this guide only touched on.
- The full SQL Fundamentals track — worth skimming even as an experienced developer, for the idioms this guide didn't have room for.
More transition guides (SQL Server → MySQL, JavaScript → TypeScript) are on the way — no need to go looking elsewhere.