この節では、複合プラン内でだけ使用できるステップを説明します。複合プラン内に含まれる一部のステップの属性は、プラン変数およびプランパラメータの参照を含むことができます。
<execSubplan> ステップは、ほかのプランを実行します。<execSubplan> ステップは、<compositeSteps> 要素の子としてしか指定できません。
<execSubplan> ステップには、1 つのオプション子要素 <argList> があり、これは呼び出されたプランに渡す引数の一覧です。呼び出されたプランの <paramList> セクション内の、デフォルト値が宣言されていないパラメータごとに、この <argList> によって宣言された対応する引数が存在しなければなりません。詳細は、「<argList> 要素」を参照してください。この要素を指定する場合、この要素は 1 回しか出現できません。
<execSubplan> ステップには次の属性があります。
planName – entityName 型の必須属性で、実行するプランの名前。このステップを実行する際には、この名前を持つ、対応する最上位の <executionPlan> を指定する必要があります。この名前でインラインサブプランを参照することはできません。
planPath – pathReference 型のオプション属性で、実行するプランのパス。この属性を指定しないと、包含するプランのパスが使用されます。
planVersion – Version 型のオプション属性で、実行するプランのバージョンです。この属性を指定しないと、指定されたプランの最新バージョンが使用されます。
<inlineSubplan> ステップは、連続した複数のステップを実行します。このステップは、<compositeSteps> 要素の子としてしか指定できません。
<inlineSubplan> ステップは <execSubplan> ステップに類似していますが、<execSubplan> ステップは実行する外部プランの名前を指定するのに対し、<inlineSubplan> ステップは子要素として実行するプランを直接包含します。
インラインサブプランと最上位プランの大きな違いは、インラインサブプランは別個の名前付きエンティティとしては保存されない点です。そのためインラインサブフランは、<execSubplan> ステップでは外部から参照することができません。最上位プランは別個の名前付きエンティティであり、<execSubplan> ステップからの参照が可能です。
インラインサブプランは、コンテンツが簡潔で、呼び出し側プランのコンテキストとロジックに直接結合されている場合に便利です。このような場合以外は、独立したプランとして使用しても無意味です。呼び出し側プランのコンテキストとロジックに直接結合されている場合は、自己包含した 1 つのユニットに全ステップを含めるとプランのメンテナンスが容易になるほか、プランが読みやすくなります。
最上位プランと異なり、インラインサブプランはパラメータを宣言できません。インラインサブプランは、包含するすべてのプランのパラメータと変数を暗黙に継承します。インラインサブプランがそれ自身にローカルな変数を別途宣言することは可能であり、これにより包含するプランの変数とパラメータを隠蔽できます。サブプラン変数と包含するプランの変数が同じ名前を持つと、サブプラン変数が包含するプランの変数を隠蔽します。このようなケースでは、そのステップで使用できるのは一番内側のサブプランによって宣言された変数の値だけです。
<inlineSubplan> ステップはオプションの <varList> から構成され、インラインサブプランが単純プランであるか複合プランであるかに基づき、1 つの追加子要素 <simpleSteps> または <compositeSteps> がそのあとに続きます。
<inlineSubplan> ステップには次の子要素があります。
<varList> – オプション要素で、インラインサブプラン内で使用するプラン変数の一覧。この要素を指定する場合、この要素は 1 回しか出現できません。
<simpleSteps> – オプション要素で、単純ステップの一覧を含みます。この <simpleSteps> 要素または <compositeSteps> 要素の一方のみが存在できます。この要素を指定する場合、この要素は 1 回しか出現できません。
<compositeSteps> – オプション要素で、複合ステップの一覧を含みます。この <compositeSteps> または <simpleSteps> 要素の一方のみが存在できます。この要素を指定する場合、この要素は 1 回しか出現できません。
<inlineSubplan> ステップには次の属性があります。