モジュール内のルーチン・プロトタイプのインプリメンテーションの追加
1 つ以上のルーチン・プロトタイプをモジュール内に定義した後、定義済みルーチン・プロトタイプのルーチン本体をインプリメントするタスクを実行できます。
始める前に
- ALTER MODULE ステートメントについての説明を確認します。
- ALTER MODULE ステートメントの実行に必要な特権があることを確認します。
このタスクについて
モジュール SQL プロシージャーをプロトタイプとして最初に宣言することが可能です。 SQL プロシージャー・プロトタイプを使用すると、ルーチン本体のロジックを直ちに指定せずに、プロシージャーとそのパラメーターを定義することができます。
ルーチンのインプリメンテーションを完了する前にルーチン・プロトタイプを定義すると、他のルーチンを相互参照する複数のルーチンの作成順序を考慮しなくてもよいため、便利です。 プロトタイプを使用しない場合を考えましょう。 例えば A、B、C という 3 つのルーチンがあり、A が B を、B が C をそれぞれプログラムで呼び出すとすると、C、B、A という順序でルーチンを作成する必要があります。最初にルーチン・プロトタイプを作成しておくと、任意の順序でルーチンをインプリメントし、他のルーチンを名前で参照して、それを後でインプリメントすることができます。
ルーチン本体のないルーチンを呼び出すことはできません。 プロトタイプとして定義されたルーチンのルーチン本体をインプリメントすることは、ルーチンを正常に呼び出すための前提条件です。
制約事項
モジュールの制約事項については、モジュールに関する制約事項を参照してください。手順
タスクの結果
例
CREATE MODULE moo@
ALTER MODULE moo PUBLISH PROCEDURE prot
(IN a INT, IN b BIGINT, IN c VARCHAR(20))
LANGUAGE SQL@
ALTER MODULE moo ADD PROCEDURE prot
(IN a INT, IN b BIGINT, IN c VARCHAR(20))
BEGIN
DECLARE stmt VARCHAR(1000);
DECLARE c1 CURSOR WITH RETURN FOR sl;
SET stmt = 'SELECT 1 FROM (values(1))';
PREPARE sl FROM stmt;
OPEN c1;
END@
ALTER MODULE moo PUBLISH FUNCTION fprot (r1 INT)
RETURNS int@
ALTER MODULE moo ADD FUNCTION fprot (r1 INT)
RETURNS int
BEGIN
RETURN r1-1;
END
@