GOTO ステートメントは、SQL ルーチン内のユーザー定義ラベルに分岐させます。
構文
>>-GOTO--label-------------------------------------------------><
説明
label が、GOTO ステートメントが到達できる効力範囲内で定義されていない場合、 エラーが戻されます (SQLSTATE 42736)。
規則
例
以下の複合ステートメントでは、 パラメーター rating および v_empno がプロシージャーに渡されます。 そして、日付期間として出力パラメーター return_parm が戻されます。 従業員のその会社での就労期間が 6 か月未満の場合、 GOTO ステートメントは制御をプロシージャーの最後に移動させ、 new_salary は未変更のままになります。
CREATE PROCEDURE adjust_salary (IN v_empno CHAR(6), IN rating INTEGER) OUT return_parm DECIMAL (8,2)) MODIFIES SQL DATA LANGUAGE SQL BEGIN DECLARE new_salary DECIMAL (9,2) DECLARE service DECIMAL (8,2) SELECT SALARY, CURRENT_DATE - HIREDATE INTO new_salary, service FROM EMPLOYEE WHERE EMPNO = v_empno IF service < 600 THEN GOTO EXIT END IF IF rating = 1 THEN SET new_salary = new_salary + (new_salary * .10) ELSE IF rating = 2 THEN SET new_salary = new_salary + (new_salary * .05) END IF UPDATE EMPLOYEE SET SALARY = new_salary WHERE EMPNO = v_empno EXIT: SET return_parm = service END