プロシジャの定義方法について

rdbddlexコマンドで以下の定義文を実行すると「qdg12226e:ルーチン定義の実行で重症エラーを検出しました 詳細メッセージ='JYP8635E "INTEGER"の前後にセミコロンが指定されていません.」というエラーになります。対処方法を教えてください。

[定義文]

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 ;
プロシジャルーチンを定義するときは、プロシジャルーチンの前後を"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 入力ファイル

製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 設計/開発
このページの先頭へ