Variabilní rozsah PL / SQL & Vnitřní vnější blok: Vnořená struktura

Obsah:

Anonim

Co je vnořené bloky Oracle?

V PL / SQL lze každý blok vnořit do jiného bloku. Jsou označovány jako vnořený blok. Vnořené bloky jsou velmi běžné, když chceme provést určitý proces, a zároveň by měl být kód pro tento proces uchováván v samostatném kontejneru (bloku).

Koncept vnořeného bloku pomůže programátorovi zlepšit čitelnost oddělením složitých věcí do každého bloku a zpracováním výjimky pro každý blok uvnitř hlavního vnějšího bloku.

V tomto výukovém programu se naučíte

  • Vnořená bloková struktura
  • Rozsahy vnořeného bloku: Variabilní rozsah

Vnořená bloková struktura

Blok lze vložit do jiného bloku. To může být vnořeno buď v části provádění, nebo v části zpracování výjimek. Tyto bloky mohou být také označeny. Jeden vnější blok může obsahovat mnoho vnitřních bloků. Každý vnitřní blok je opět blokem PL / SQL, takže všechny vlastnosti a vlastnosti vnitřního bloku budou stejné jako vnější blok. Níže uvedený obrázek poskytuje obrazové znázornění vnořené blokové struktury. Nadřazený blok je hlavní blok a podřízený blok je vnořený blok.

Níže je uvedena syntaxe pro vnořený blok.

Syntaxe vnořeného bloku

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Výše uvedená syntaxe ukazuje vnořený blok, který obsahuje celkem dva bloky.
  • Tyto bloky jsou označeny jako „outer_block“ a „internal_block“

Rozsahy vnořeného bloku: Variabilní rozsah

Ve vnořeném bloku je třeba před použitím jasně pochopit rozsah a viditelnost každého bloku. Zejména ve vnitřním bloku budou viditelné prvky jak z vnějšího, tak z vnitřního bloku, proto je nutné toto správně pochopit.

Níže budou shrnuty další informace o oborech ve vnořených blocích.

  • Prvky deklarované ve vnějším bloku a hodnota, která je definována před definicí vnitřního bloku, je viditelná uvnitř vnitřního bloku.
  • Prvky deklarované ve vnitřním bloku nejsou ve vnějším bloku viditelné. Jsou viditelné pouze uvnitř vnitřního bloku.
  • Vnější blok a vnitřní blok mohou mít proměnnou se stejným názvem.
  • V případě proměnných se stejným názvem bude vnitřní blok ve výchozím nastavení odkazovat na proměnnou deklarovanou pouze ve vnitřním bloku.
  • Pokud vnitřní blok chce odkazovat na proměnnou vnějšího bloku, která má stejný název jako vnitřní blok, měl by být vnější blok LABELED a proměnná vnějšího bloku může být označena jako '. '

Níže uvedený příklad pomůže pochopit více o těchto oborech.

Příklad 1 : V tomto příkladu uvidíme rozsah proměnných ve vnitřním a vnějším bloku. Uvidíme také, jak odkazovat na proměnné pomocí štítku bloku.

<>DECLAREvarl VARCHAR2(30):='outer_block';var2 VARCHAR2(30):='value before inner block’;BEGIN<>DECLAREvarl VARCHAR2(30):='inner_block';BEGINdbms_output.put_line(varl), ‭ ‬dbms_output.put_line(OUTER_BLOCKvar1);dbms_output.put_line(var2);END;var2:='value after inner block';END;/

Vysvětlení kódu:

  • Řádek kódu 1 : Označení vnějšího bloku jako „OUTER_BLOCK“.
  • Řádek kódu 3 : Deklarace proměnné „var1“ jako VARCHAR2 (30) s počáteční hodnotou „vnějšího bloku“.
  • Řádek kódu 4 : Deklarace proměnné „var2“ jako VARCHAR2 (30) s počáteční hodnotou „hodnota před vnitřním blokem“.
  • Řádek kódu 6: Označení vnitřního bloku jako „INNER_BLOCK“
  • Řádek kódu 8: Deklarace proměnné „var1“ ve vnitřním bloku jako VARCHAR2 (30) s počáteční hodnotou „vnitřní blok“.
  • Řádek kódu 10: Tisk hodnoty „var1“. Vzhledem k tomu, že ve výchozím nastavení není uveden žádný štítek, bude mít hodnotu z vnitřního bloku, a proto vytiskne zprávu „internal_block“.
  • Řádek kódu 11: Tisk hodnoty proměnné vnějšího bloku „var1“. Protože vnitřní blok má proměnnou se stejným názvem, musíme odkazovat na štítek vnějšího bloku. Vytiskne se tedy zpráva „vnější blok“.
  • Řádek kódu 12: Tisk hodnoty proměnné vnějšího bloku „var2“. Vzhledem k tomu, že ve vnitřním bloku není žádná proměnná s tímto názvem, ve výchozím nastavení převezme hodnotu z vnějšího bloku, a proto vytiskne zprávu „hodnota před vnitřním blokem“.
  • Proměnné 'var2' ve vnějším bloku byla přiřazena hodnota 'hodnota po vnitřním bloku'. Ale toto přiřazení se stalo po definici vnitřního bloku. Tato hodnota proto není ve vnitřním bloku přítomna.

Příklad 2 : V tomto příkladu najdeme rozdíl mezi dvěma čísly, jedním deklarovaným na vnějším bloku a druhým na vnitřním bloku. Oba budou mít stejný název. Podívejme se, jak je popis bloku užitečný při odkazování na tyto proměnné.

<>DECLAREln_val NUMBER :=5;BEGIN<>DECLAREln_val NUMBER :=3;BEGINdbms_output.put_line(The difference between outer block and inner block variable is:'||' outer_block. ln_val-inner_block.ln_val);END;END;/

Vysvětlení kódu:

  • Řádek kódu 1 : Označení vnějšího bloku jako „OUTER_BLOCK“.
  • Řádek kódu 3 : Deklarace proměnné „ln_val“ jako ČÍSLO s počáteční hodnotou „5“.
  • Řádek kódu 5: Označení vnitřního bloku jako „INNER_BLOCK“
  • Řádek kódu 7: Deklarace proměnné „ln_val“ ve vnitřním bloku jako ČÍSLO s počáteční hodnotou „3“.
  • Řádek kódu 9: Tisk rozdílu v hodnotě 'ln_val' z vnějšího a vnitřního bloku. Formát „. “ se používá k označení těchto proměnných, aby se zabránilo konfliktům kvůli stejnému názvu proměnné.

souhrn

V tomto kurzu jsme se naučili, jak vytvořit vnořený blok a jak zacházet s oborem ve vnitřním bloku a vnějších blocích. Viděli jsme také příklad, kdy se proměnné z vnitřního a vnějšího bloku odkazovaly uvnitř vnitřního bloku.