"P1: begin" と "P2: begin" を使用して、ストアド プロシージャが異なる部分にタグ付けされている理由について説明したり、ドキュメントを参照したりできますか? ありがとう、マイク
1 に答える
SQL プロシージャーはroutine-bodyによって定義されます。ルーチン本体は1 つのSQLステートメントによって定義されます。SQL プロシージャの場合、通常は 1 つの複合ステートメントによって定義されますが、複合ステートメントは別のステートメント内にネストすることができます。それぞれlabel:Begin
が新しい複合ステートメントの始まりを確立します。別の中で定義されたものは、ネストされた複合ステートメントになります。以下は、質問に対する回答として満足できるドキュメント リンクです。主な目的をスコープとして説明するドキュメントのスニペットが含まれており、スコープが設定されている各エンティティに重点を置きました。
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/db2/rbafzsummaryscope.htm
ネストされた複合ステートメントでの「名前」スコープの要約 ネストされた
複合ステートメントを SQL ルーチン内で使用して、SQL変数宣言、カーソル、条件名、および条件ハンドラーのスコープを定義できます。
さらに、ラベルには、ネストされた複合ステートメントのコンテキストでスコープが定義されています。ただし、名前空間の規則、および一意でない名前を参照する方法は、名前の種類によって異なります。次の表は、これらの違いをまとめたものです。[...]