Top Menu

Jump to content
  • 01. Kurs Oracle
    • View all projects
Home
    • Work packages
    • News
    • Getting started
    • Introduction video
    • Welcome to OpenProject

      Get an overview

      Get a quick overview of project management and team collaboration with OpenProject.
      You can restart this video from the help menu

    • Help and support
    • Upgrade to Enterprise Edition
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Professional support

    • Additional resources
    • Data privacy and security policy
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Create a new account
      Forgot your password?

Side Menu

  • Overview
  • # Plan Kursu
    • Table of contents
      • Liść hierarchii# @Łukasz @INSTRUKTOR IT
      • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENY:
        • Liść hierarchiiOCENA: 4 | Szy@@ K@@@@@@@@ (System do rejestracji napraw w dziale IT)
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5+ |Grzegorz A@@@@@@@@
          • Liść hierarchiiZapisy na koncert
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 | Izabela Na@@
          • Liść hierarchii (księgarnia ) - ZAPYTANIA
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 | Jak@@ C@@@@
          • Liść hierarchii(Dokument sprzedaży - Sprzedaż produktów )
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 |Kam@@ O@@@@@@@@@@@
          • Liść hierarchiiOCENA: 5 | Braj@@ Mokrz@@@@ Sklep budowlany
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 | Kr@@ Ra@@@@
          • Liść hierarchiiKonfigurator komputera
          • Liść hierarchiiPolecenia
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 | Mak@@@ G@@##
          • Liść hierarchiiSystem rejestracji samochodów
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5+ |Marcin Sz#@@@@@
          • Liść hierarchiiWypożyczalnia samochodów
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA:5 |Paw@@ Cz@@@@@
          • Liść hierarchiiSystem rejestracji więźniów
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5 |Szy@@ Bu@@@@
          • Liść hierarchiirejestracja na wakacje
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA 5 |Szymon St@@@@##
          • Liść hierarchiiSystem dla wypożyczalni gier
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 5+ | Wo@@@@@ Sul@@@
          • Liść hierarchiiMagazyn opon
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćOCENA: 6 |Bar@@@ Ba@@@@@
          • Liść hierarchiiWypożyczalnia sprzętu wodnego
        • Liść hierarchiiZ Skolenie Nauczycieli 01.02.2012
      • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazać# Plan Kursu
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćA-0. Wprowadzenie
          • Liść hierarchiiA-0.1 Filtrowanie wierszy
          • Liść hierarchiiA-0.2 Operatory
          • Liść hierarchiiA-0.3 Sortowanie
          • Liść hierarchiiA-0.4 Typy danych
          • Liść hierarchiiA-0.5 Funkcje znakowe
          • Liść hierarchiiA-0.6 Funkcje numeryczne
          • Liść hierarchiiA-0.7 Daty i funkcje do manipulowania datami
          • Liść hierarchiiA-0.8 Funkcje agregujące
          • Liść hierarchii A-1.9 Procedury i funkcje – informacje rozszerzone
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćA-1. Instrukcje SQL w PL/SQL
          • Liść hierarchiiA-1.1 Instrukcja NULL
          • Liść hierarchiiA-1.2. Zmienne i stałe proste
          • Liść hierarchiiA-1.3. Instrukcja GOTO
          • Liść hierarchiiA-1.4. Instrukcje sterujące
          • Liść hierarchiiA-1.5 Pętle
          • Liść hierarchiiA-1.6 Tablice
          • Liść hierarchiiA-1.7 Zmienne rekordowe
          • Liść hierarchiiA-1.8 Instrukcja SELECT
        • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazać# Praktyka
          • Rozwinięto. Kliknij, aby zwinąćZwinięto. Kliknij, aby pokazaćB-0.1 Ćwiczenia 1
            • Liść hierarchiiB-0.2 update pracownicy
            • Liść hierarchii B-0.3 zmiana typu kolumny + dodanie kolumny kod_departamentu do tabeli pracownicy
            • Liść hierarchiiB-0.4 PRZYCZYNY ABSENCJI
            • Liść hierarchiiB-0.5 TABELA --ABSENCJE
            • Liść hierarchiiB-0.6 TABELA--FAKTURY_SPRZEDAZY
            • Liść hierarchiiB-0.7 TABELA -- KLIENCI
            • Liść hierarchiiB-0.8 TABELA RODZAJE SRODKOW TRANSPORTU
            • Liść hierarchiiB-0.9 TABELE -- ZAKUPY + ZAKUPY_POZYCJE
          • Liść hierarchiiB-1.1 Grupowanie danych, czyli group by
          • Liść hierarchiiB-1.2 order by + join TABLE + SELECT z 2 tabel po kluczu relacji
          • Liść hierarchiiB-1.3 SELECT ZAGNIEŻDZONY
          • Liść hierarchiiB-1.4 WIDOKI
          • Liść hierarchiiB-1.5 Wyliczanie średnich
          • Liść hierarchiiB-1.6 TRIGGER Pracownicy_Archiwum
          • Liść hierarchiiB-1.7 Ćwiczenia Zliczanie czasów w RPC
        • Liść hierarchiiZADANIE RCP
You are here:
  • # Plan Kursu
  • A-1. Instrukcje SQL w PL/SQL
  • A-1.5 Pętle

Content

A-1.5 Pętle

  • More
    • Table of contents

Pętle

Kiedy potrzebujemy jakąś czynność wykonać wielokrotnie, stosujemy pętle. Najprostszą pętlą jest pętla LOOP.

LOOP

Prezentowana niżej pętla nie posiada warunku wyjścia, będzie się wykonywać w nieskończoność lub do momentu wystąpienia jakiegoś błędu jak to widać w logu. Powtarzane są instrukcje znajdujące się pomiędzy klauzulami LOOP oraz END LOOP.

Aby pętla mogła się kiedyś zakończyć, musimy podać jej warunek wyjścia w jednej z dwóch form. Korzystając z klauzuli EXIT WHEN:

lub stosując warunek IF THEN z klauzulą EXIT:

WHILE

Pętla WHILE działa podobnie do pętli LOOP. W tym przypadku najpierw podajemy warunek wyjścia. Z Oraclowego na nasze poniższa konstrukcja oznacza „do czasu aż zmienna x jest mniejsza niż 20, wykonuj następujące czynności”. Musimy zwrócić uwagę by warunek został spełniony, inaczej pętla nam się „zawiesi”.

Po klauzuli WHILE podajemy warunek który określa stan dla którego pętla ma być wykonywana. Częstym błędem jest wstawianie tutaj warunku który ma spowodować wyjście. Działa to nieco „na opak” i warto zwrócić na to uwagę. Tą pętlę można również przerwać przy pomocy polecenia EXIT lub znanego ze zwyczajnej pętli LOOP warunku EXIT WHEN.

Pętla FOR

Pętlę tą stosuje się gdy wiemy ile dokładnie razy ma zostać wykonana. Możemy dokładnie określić liczbę jej powtórzeń. Można ten sam efekt uzyskać również przy pomocy pętli WHILE lub LOOP stosując iterator i warunek wyjścia, ale taka konstrukcja byłaby znacznie mniej czytelna i „aż prosi się o problemy” z tego powodu że musiałby być zastosowany jeden warunek wymagany dla tych pętli, oraz drugi od którego w rzeczywistości uzależnialibyśmy zakończenie powtórzeń pętli.

W poniższym przykładzie zaprezentowałem pętle typu FOR która ma zostać wykonana 6 razy. Proszę zauważyć, że zmienna „iterator” która powiększa się po każdym obrocie pętli nie jest wcześniej deklarowana. Zasięg tej zmiennej to wyłącznie pętla i nie możemy się do niej odnosić poza blokiem pętli.

Ponownie z oraclowego na nasze : „for iterator in 1..6 loop”oznacza „dopóki zmienna o nazwie iterator ma wartość zawartą w zbiorze od 1 do 6 wykonuj poniższe czynności. Iterator zwiększa się o jeden przy każdym cyklu.

Domyślnie przy deklaracji zakresu najpierw podaje się wartość mniejszą a następnie większą a wartość iteratora maleje z każdym cyklem. Możemy to odwrócić stosując klauzulę REVERSE. W takim wypadku wartość iteratora będzie się zmniejszać.

(!) Kolejny często popełniany błąd: podawanie zakresu poczynając od wartości większej. Taka deklaracja spowoduje że pętla nie wykona się ani razu. Program zostanie skompilowany i programista nie zostanie poinformowany o tego typu błędzie, dlatego o tym piszę i dlatego trzeba na to uważać.

Tak jak i we wcześniej prezentowanych pętlach, także i tutaj możemy skorzystać z polecenia EXIT lub EXIT WHEN.

Loading...