CREATE PROCEDURE ステートメントを DB2 コマンド行プロセッサー (DB2 CLP) スクリプトとして発行するには、スクリプト内の SQL ステートメントで代替終了文字を使用する必要があります。デフォルトの DB2 CLP スクリプトでは、セミコロン (';') 文字が SQL プロシージャー本体内の SQL ステートメントの終了文字として使用されています。
DB2 CLP スクリプトで別の終了文字を使用する場合には、標準 SQL ステートメントでは使用されていない文字を選択してください。次の例では、 script.db2 という名前の DB2 CLP スクリプトで、アットマーク ('@') が終了文字として使用されています。
CREATE PROCEDURE UPDATE_SALARY_IF (IN employee_number CHAR(6), IN rating SMALLINT) LANGUAGE SQL BEGIN DECLARE not_found CONDITION FOR SQLSTATE '02000'; DECLARE EXIT HANDLER FOR not_found SIGNAL SQLSTATE '20000' SET MESSAGE_TEXT = 'Employee not found'; IF (rating = 1) THEN UPDATE employee SET salary = salary * 1.10, bonus = 1000 WHERE empno = employee_number; ELSEIF (rating = 2) THEN UPDATE employee SET salary = salary * 1.05, bonus = 500 WHERE empno = employee_number; ELSE UPDATE employee SET salary = salary * 1.03, bonus = 0 WHERE empno = employee_number; END IF; END @
コマンド行からの DB2 CLP スクリプトを処理するには、以下のような構文を使用します。
db2 -tdterm-char -vf script-name
ここで、 term-char は終了文字を表し、 script-name は処理する DB2 CLP スクリプト名を表します。たとえば、前述のスクリプトを処理するには、 CLP から以下のコマンドを発行します。
db2 -td@ -vf script.db2