Employee表に新しい従業員を追加し、従業員が所属する部門の名前を抽出するために使用できる、NewProcという名前のSQLストアド プロシージャを作成することを想定します。また、すでに存在する行を挿入しようとした場合にエラーを報告し、エラー状況の処理を行なう機能を組み込みます。
以下のSQLストアド プロシージャ定義には、入れ子形式のラベル付き複合文が組み込まれています。L3というラベルが付いた複合文は、外側の複合文L1の中で入れ子になっています。L2というラベルが付いた複合文は状況処理機能のハンドラー アクション句であることに注意する必要があります。
このSQLストアド プロシージャでは、呼び出し(実行)時に毎回入力する必要のあるパラメータを定義しています。
CREATE PROCEDURE NewProc (IN name CHAR(12), IN num INTEGER, IN dept INTEGER, OUT dname CHAR(10), INOUT p1 VARCHAR(30)) L1: BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE value '23505' L2: BEGIN SET p1='Duplicate Row' ; END L2; L3: BEGIN INSERT INTO Employee (EmpName, EmpNo, DeptNo) VALUES (name, num, dept) ; SELECT DeptName INTO dname FROM Department WHERE DeptNo = dept; IF SQLCODE <> 0 THEN LEAVE L3; ... END L3 ; END L1 ;