Packages
Specification and body, with state kept per session · Package records, constants, cursors and initialization sections · Types, subtypes and exceptions declared in a package and used from other code · Private body items, and recursion that keeps each caller's values
The PL/SQL language
SUBTYPE, and 13 predefined subtypes such as POSITIVE and NATURAL · PLS_INTEGER, SIMPLE_INTEGER, SYS_REFCURSOR and cursor attributes · SELECT INTO, EXECUTE IMMEDIATE, and procedure calls without CALL · FOR ... IN REVERSE in Oracle's order
Exceptions
User-defined and predefined exceptions, raised and caught by name · PRAGMA EXCEPTION_INIT with Oracle's scope and codes · RAISE_APPLICATION_ERROR, and SQLCODE and SQLERRM in handlers
Collections and types
Nested tables, VARRAY and INDEX BY PLS_INTEGER collections, with EXTEND · BULK COLLECT, TABLE() in a query, and pipelined functions · Schema-level object types (attributes) and collection types, with constructors
Triggers and SQL
Oracle's trigger syntax: the body in the statement, :new and :old, INSERTING, UPDATING, DELETING, REFERENCING · MINUS, Oracle's set-operator order, and ROWNUM in single-table queries · IEEE arithmetic for BINARY_FLOAT and BINARY_DOUBLE · DBMS_OUTPUT, DBMS_LOB, UTL_RAW and part of DBMS_UTILITY
Running it
One server, two dialects: Oracle mode on its own port beside PostgreSQL's, so no session has to switch · Backup and restore of Oracle-mode databases with pg_dump · Builds on Linux and on Windows, where three Oracle-mode tests still fail