Comparison of application development capabilities

Databases are a foundation of today’s data-driven enterprise, and applications are increasingly data intensive. Vendors in turn work to continually enhance their database solutions to support the needs of application developers who seek the flexibility to make choices and simple ways for executing complex tasks. For example, databases that can provide support for multiple server-side languages for triggers, functions, and stored procedures give developers the option to choose their language for both client, middle-tier, and database server programming. Object-oriented capabilities like user-defined object types allow the database to store real-world representations of data, thus making development easier, quicker, and more understandable.

Application development

Oracle Enterprise

EDB Postgres Advanced Server

IDE

Yes <br/> SQL Developer

Yes <br/> Postgres Enterprise Manager

Database server programming language

Yes <br/> PL/SQL (block structured language)

Yes <br/> EDB SPL (PL/SQL compatible) (block structured language)

Additional programming languages for database server stored procedures, triggers, and functions

Yes <br/> Java, C, .NET (C#, Visual Basic)

Yes <br/> PL/pgSQL (PostgreSQL’s procedural language), C, C++, PL/Perl, Python, PL/Tcl

JDBC support

Yes

Yes <br/> EDB JDBC Connector

ODBC support

Yes

Yes <br/> EDB ODBC Connector

.NET support

Yes

Yes <br/> EDB .NET Connector

OCI support

Yes

Yes ✓ <br/> EDB OCL Connector

PL/SQL debugger

Yes <br/> SQL Developer

Yes <br/> Postgres Enterprise Manager

Stored procedures

Yes

Yes ✓

Named parameter notation for stored procedures

Yes

Yes ✓

Triggers

Yes

Yes ✓

REF cursors

Yes

Yes ✓

Anonymous blocks

Yes

Yes ✓

Bulk collect/bind

Yes

Yes ✓

Associative arrays

Yes

Yes ✓

Nested tables

Yes

Yes ✓

VARRAYS

Yes

Yes ✓

Hierarchical queries

Yes

Yes ✓

Parallel query

Yes

Yes ✓

PL/SQL supplied packages

Yes

Yes <br/> (See EDB Postgres Advanced Server-compatible package support)

PRAGMA RESTRICT_REFERENCES

Yes

Yes ✓

PRAGMA EXCEPTION_INIT

Yes

Yes ✓

PRAGMA AUTONOMOUS_TRANSACTION

Yes

Yes ✓

User-defined functions

Yes

Yes

User-defined objects

Yes

Yes

User-defined exceptions

Yes

Yes ✓

EDB Postgres Advanced Server-compatible package support

EDB focuses on the most popular functions in packages. For some packages, not all Oracle functions are supported. For specific details, refer to the EDB Postgres Advanced Server documentation.

Package name

Package description

DBMS_ALERT

Functions that allow asynchronous notification of database events by way of an alert. Using this package and triggers, an application can notify itself whenever values of interest in the database are changed.

DBMS_AQ

Database-integrated asynchronous message queuing provides a flexible mechanism for integrating applications across the enterprise by communicating activities and exchanging a variety of information payloads.

DBMS_AQADM

Provides procedures to create and manage queues and queue tables.

DBMS_CRYPTO

Provides functions to encrypt and decrypt stored data.

DBMS_JOB

Was replaced by DBMS_SCHEDULER but is included for compatibility with older Oracle applications.

DBMS_LOB

Functions that allow access to and manipulation of Large Object values.

DBMS_LOCK

Provides a function interface to Lock Management services.

DBMS_MVIEW

Provides procedures to manage and refresh materialized views and their dependencies.

DBMS_OUTPUT

Allows sending messages from stored procedures, packages, and triggers for application or debugging use.

DBMS_PIPE

Functions that allow two or more sessions in the same database instance to communicate with one another.

DBMS_PROFILER

Provides functions to profile stored procedure workloads and identify performance bottlenecks.

DBMS_RANDOM

Useful functions to generate random text, numeric, and date values.

DBMS_REDACT

Redaction prevents a user from seeing all or portions of sensitive data.

DBMS_RLS

Implements row-level security functions in the database, blocking users from seeing each other’s data in the same application.

DBMS_SCHEDULER

Job scheduler functions for creating and executing unattended repetitive tasks inside the database.

DBMS_SQL

Permits the use of dynamic SQL in procedures to allow applications to run SQL statements with unknown parameters (such as table name) until runtime.

DBMS_SESSION

Functions with the ability to enable and disable roles.

DBMS_UTILITY

A collection of functions for getting information about various runtime operations and metadata from the database.

UTL_ENCODE

Functions to perform Base64 encoding and decoding of data intended for transport between hosts.

UTL_FILE

Allows database procedures to read and write operating system text files in an I/O stream fashion.

UTL_HTTP

Functions that enable you to make HTTP calls to access information on web servers.

UTL_MAIL

Provides functions to create, manage, and send email from the database including attachments, CC, and BCC.

UTL_RAW

Functions supporting manipulating raw data types.

UTL_SMTP

Provides functions for sending email via SMTP according to the RFC821 specification.

UTL_TCP

Provides procedures and functions to enable PL/SQL applications to communicate with external TCP/IP-based servers using TCP/IP.

UTL_URL

Functions for escaping and “unescaping” URL strings.