ページの先頭行へ戻る
Symfoware Server V10.0.0 トラブルシューティング集

1.2.1 プロシジャ定義時の異常

プロシジャ定義時に発生したトラブルの事例、およびその対処方法について説明します。

定義文を入力してrdbddlexコマンドを実行すると、qdg12226eのエラーが発生する

以下の定義文を入力にして、rdbddlexコマンドを実行するとエラーになります。

定義文
CREATE PROCEDURE S.P1(IN PARA1 INTEGER)

BEGIN
DECLARE A INTEGER ;

SET A = PARA1 + 1 ;

INSERT INTO T1(C_ID, U_NO, S_CODE)

VALUES ('IDxxxxxx', A, '0001') ;

END ;
エラーメッセージ
qdg12226e:ルーチン定義の実行で重症エラーを検出しました 詳細メッセージ='JYP8635E "INTEGER"の
前後にセミコロンが指定されていません.'
【対処方法】

プロシジャルーチンを定義するときは、プロシジャルーチンの前後を「EXEC SQL」と「END-EXEC;」で囲んで定義します。
これにより、上記定義文では、「BEGIN」~「END;」におけるENDの後のセミコロン(;)は不要となります。
以下にプロシジャルーチン定義文を記述します。

EXEC SQL

CREATE PROCEDURE S.P1(IN PARA1 INTEGER)

BEGIN

DECLARE A INTEGER ;

SET A = PARA1 + 1 ;

INSERT INTO T1(C_ID, U_NO, S_CODE)

VALUES ('IDxxxxxx', A, '0001') ;

END

END-EXEC ;

なお、rdbddlexコマンドでプロシジャルーチンを定義する場合は、以下のようにxオプションの指定が必要です。

rdbddlex -d データベース名 -x 入力ファイル

参照

関連する質問として、“8.1.3 SQLの構文について知る”の“プロシジャ定義する変数の精度は指定する必要があるか?”があります。必要に応じて参照してください。