smyčka FOR

smyčka FOR je pravděpodobně nejdůležitější smyčkou implementovanou v PL/pgSQL. Použijte smyčku theFOR k iteraci bloku příkazů v rozsahu zadaných celých čísel. Struktura pro smyčku v PL / pgSQL je podobná FORloops v jiných procesních jazycích, jako je C.

v PL / pgSQL pro smyčku je nejprve uvedena celočíselná proměnná, která sleduje iteraci smyčky, pak je zadán celočíselný rozsah a nakonec je zadán blok příkazů. Celočíselná proměnná vytvořená pro iteraci smyčky je zničena, jakmile smyčka skončí; nemusí být deklarována v deklaraci sekce bloku. Následující text ukazuje syntaxi smyčky FOR:

 FOR identifier IN expression1 .. expression2 LOOP statement; END LOOP;

smyčka FOR provede jednu iteraci pro každou zvyšovanou hodnotu identifikátoru, která je v rozsahu hodnot mezi a včetně expression1 a expression2. Hodnota identifikátoru bude inicializována na hodnotu expression1, bez ohledu na předchozí nastavení, a zvýšena o jednu každou iteraci. Pokud je zadán reverse, bude identifikátor spíše snížen než zvýšen.

Poznámka: identifikátor používaný ke sledování iterace nemusí být deklarován mimo blok for, Pokud si nepřejete mít přístup k jeho hodnotě po dokončení smyčky.

smyčka FOR může být také použita k procházení výsledků dotazu. Thesecond pro smyčku v příkladu 11-45 demonstruje použití smyčky aFOR pro práci s proměnnými RECORD a%ROWTYPE. Syntaxe FOR loop, která se mění pomocí proměnných RECORD a %ROWTYPE, je zobrazena v následující syntaxi:

 FOR { record_variable | %rowtype_variable } IN select_statement LOOP statement; END LOOP;

v příkladu 11-45 se funkce extract_all_titles() používá k rozbalení seznamu všech titulů knih, které existují v databázi, uspořádaných podle předmětu. Pokud předmět nemá žádné knižní tituly, zobrazí se řádek ablank. Seznam je vrácen jako textová proměnná. Smyčka FOR se používá v rámci funkce extract_all_titles() pro cyklování dostupných subjektů podle čísla.

další smyčka pro smyčku je vnořena do původní smyčky, aby procházela dostupnými knihami a načítala všechny knihy s hodnotami subject_id, které odpovídají proměnné iterace původní smyčky, která představuje aktuální identifikační číslo subjektu, které funkce vyhledává. V příkladu 11-45 je iterační proměnná i inicializována na nulu, protože první číslo subjektu v tabulce předmětů je 0.

příklad 11-46 ukazuje kód jiné funkce, která používá smyčku aFOR k iteraci prostřednictvím výsledků dotazu SQL. S každou iterací smyčky pro smyčku v příkladu 11-46 umístí obsah řádku aresult z dotazu proti tabulce knih do proměnné row_data a poté vloží hodnotu pole názvu řádku do proměnné text_output.

smyčka končí, když je dosaženo posledního záznamu v knihách. Na konci smyčky bude text_output obsahovat seznam všech titulů knih, které odpovídají ID předmětu numberpassed na funkci. Proměnná text_output je vrácena na konci funkce.

příklad 11-47 ukazuje výsledky funkceextract_title (), když je jako argument předán 2, který představuje“ dětské knihy “ v tabulce předmětů.

proměnná row_data je deklarována jako %ROWTYPEof tabulky knih, protože bude použita pouze k uložení záznamů z tabulky knih. Mohli jsme deklarovat row_data jako aRECORD, abychom dosáhli stejného výsledku, ale Typ záznamu by měl být použit, pokud budete používat proměnnou pro více než jen řádky jedné konkrétní tabulky:

row_data RECORD;

funkce extract_title() vrátí stejné výsledky, ať už jsou data řádků deklarována jako záznam, nebo jsou deklarována pomocí%ROWTYPE.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.