別のストアド プロシージャをコーディングするときに、完全なスキーマ名を指定せずに同じスキーマ内のストアド プロシージャを呼び出すにはどうすればよいですか。これらは、DB2 内の SQL PL プロシージャーです。
最初の SP:
CREATE PROCEDURE MYSCHEMA.SP_TEST
LANGUAGE SQL
BEGIN
END
スキーマ名なしでこの SP を直接呼び出す SP を作成すると、コンパイル エラーが発生します。
CREATE PROCEDURE MYSCHEMA.SP_TEST2
LANGUAGE SQL
BEGIN
CALL SP_TEST();
END
それはスローします:
互換性のある引数を持つタイプ "PROCEDURE" の "SP_TEST" という名前の許可されたルーチンが見つかりませんでした.. SQLCODE=-440、SQLSTATE=42884、DRIVER=3.53.71
完全なスキーマ名を直接指定すると、次のように機能します。
CREATE PROCEDURE MYSCHEMA.SP_TEST2
LANGUAGE SQL
BEGIN
CALL MYSCHEMA.SP_TEST();
END
ただし、別のスキーマに移動した場合は、その参照をあちこちで置き換える必要があります。問題に対する適切な回避策またはより良い解決策はありますか?