PL/SQL
データ型については、変数は文字列型などの基本的な型以外に、ネストした表(配列型。ただし添え字は連続していなくてもよく、リスト構造のようなアクセスが可能)、レコード型(構造体のようなもの)、レコード型の配列、索引付き表(連想配列、ハッシュ表のようなもの)が可能。それ以外にPL/SQLでは、「XXテーブルのYY列の型」や「XXテーブルのレコードの型」といった間接的な型指定が可能なため、テーブルなど依存するデータベースオブジェクトの変更に対しても再解析(リコンパイル)だけで対応でき、また、リコンパイルで問題が発生しない場合にかぎり、実行時にPL/SQLエンジンが自動的にリコンパイルを試みるという利点がある。
ストアドプロシージャ・ストアドファンクションは、PL/SQLのコードに名前を付けて、解析したコードをサーバに登録し、呼び出しが可能な状態にすることができる機能。プロシージャは戻り値無し、ファンクションは戻り値があるという違いだけである。 通常のSQL文と比較して、ストアドファンクション・プロシージャの方が、実行時に解析済みのため処理が早いが、参照しているデータベーススキーマを変更すると(テーブルなどの構成を変更すると)、再解析(コンパイル)が必要になる。
ストアドファンクションは通常のSQL文の関数として使用することができる。
PL/SQLがAda言語の特徴を色濃く示すところは「パッケージ」の概念を取り入れているところである。 これは、C言語による静的変数やヘッダファイルによるアクセスコントロールの機能に似たものであり、永続性のある変数や、他のパッケージからの参照を許さない変数やストアドプロシージャ等を作ることができる。
しかし、インスタンス化ができないため、オブジェクト指向言語におけるクラスとは本質的に異なる。 ただ、そのパッケージが初めて呼ばれたときにだけ実行されるという「自動初回コード(INITブロック)」が記述できる点は、C言語などには見られない特徴的な点である。