PL/SQL
主に、データベース定義(CREATE DATABASE文)完了後に実行するSQLスクリプトとしてcatproc.sqlがあるが、この時点ではユーティリティパッケージ(DBMS_XXX)どころか標準SQL関数のCOUNT()なども未定義の状態である。これらの機能は通常、データベースカタログを定義するスクリプトcatalog.sqlの実行後に、catproc.sqlというスクリプトを実行することで定義される。 パッケージSTANDARDで定義されているプロシージャ・ファンクションは、呼び出すときにパッケージ名を修飾せずとも呼び出せる。
このcatprocは、OUIでプロダクトインストールとともにデータベース定義も行う場合や、 別途DBCA(Database Configuraton Assistant)にてデータベースを定義する場合、DBCAでデータベース定義スクリプトを生成した場合にスクリプトの中に含まれた形で実行されるためあまり意識する必要はないが、定義したデータベースの動作がおかしい場合はこのあたりを見直し、場合によってはスクリプトの再実行を行う必要もある。
PL/SQLの文法・構文はAda言語をベースにしている。 Oracle Corporation CEOのラリー・エリソンが、Oracle を開発する前に国防総省向けのシステム開発をAda言語によって行っていた。そのシステム計画は失敗したが、その経緯からAda言語を元にすることを採用したと推測される。ちなみにそのシステムの計画名は "Oracle" と呼ばれていた。
登録されている表に対して、行追加、更新、削除の前後のタイミングで自動的に処理を走らせるPL/SQLブロックを登録することができる。これをデータベーストリガと呼ぶ。処理されるデータ1件ずつ処理することができ、また変更前と変更後の値を使うことができる。起動条件を細かく設定することも可能である。本来は「制約」定義で管理できない参照整合性を管理するために用いるものである。業務処理を暗黙に組み込みすぎると、業務処理の変更があった場合に他の応用プログラムの挙動に影響を与えやすいため、注意して利用すべきである。
エラー処理など考慮すべき点は多いが、非正規化した表の同期に使用すると便利である。