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-0. Wprowadzenie
  • A-1.9 Procedury i funkcje – informacje rozszerzone

Content

A-1.9 Procedury i funkcje – informacje rozszerzone

  • More
    • Table of contents

Kurs Oracle PL/SQL. Procedury i funkcje – informacje rozszerzone

Procedury i funkcje – informacje rozszerzone

Dla procedur oraz funkcji istnieją opcjonalne parametry. Mogą występować w trzech typach

IN – parametr tylko do odczytu, poprzez który dane zostają przekazane do podprogramu.

OUT – Służy do zwracania wartości z podprogramu. Ma wartość NULL do momentu kiedy zostanie zainicjalizowana.

IN OUT – Połączenie dwóch powyższych typów. Podczas wywoływania programu tym parametrem przekazywane są do niego wartości, a po zakończeniu wykonywania zwracane. Stosuje się go gdy dane wejściowe mają zostać zmienione podczas działania programu.

Podczas deklarowania parametrów dla procedury lub funkcji nie ma sztywnych ograniczeń co do ich ilości oraz kolejności. Parametry mogę zadeklarować na kilka różnych sposobów i poniżej omawiam to na przykładach:

wejsciowy1 – parametr wejścia typu varchar2, nie posiada wartości domyślnej i dlatego przy wywoływaniu podprogramu będę zmuszony ją podać.

wejsciowy2 oraz wejsciowy3 - dwa sposoby zadeklarowania wartości domyślnej dla parametru. Jeśli nie przypiszę żadnej wartości, przypisana zostanie automatycznie wartość występująca po DEFAULT lub znaku przypisania. Podczas wywoływania podprogramu nie muszę podawać wartości do tego parametru.

wejsciowy4 – ponieważ nie określiłem jaki ma to być typ parametru, Oracle domyślnie przyjmuje że jest ot parametr typu IN.

wejsciowy5 – parametr typu wejściowego numerycznego który będę musiał uzupełnić przy wywoływaniu procedury.

wyjsciowy – parametr wyjściowy typu number. Nie mogę określić dla niego wartości domyślnej, ani wartości wejściowej przy wywołaniu programu. Mogę to zrobić jedynie wewnątrz podprogramu.

dwustronny – parametr do którego nie mogę przypisać wartości domyślnej przy wywoływaniu podprogramu. Mogę podać do niego wartość podczas wywoływania podprogramu.

Mogę określać typ parametru, nie mogę natomiast długości. Zamiast więc stosować varchar2(243) muszę zastosować samo varchar2.

Przykład wzajemnego wywoływania procedur oraz praktycznego przekazywania parametrów.

Tworzę procedurę o nazwie „wypisywacz”, która po otrzymaniu danych w parametrach wejściowych (imię i nazwisko są domyślnie IN) ma wypisać na ekranie powitanie. Ponadto do parametru wyjściowego wzrost ma przypisać wartość 178.

2. Z bloku anonimowego wywołuję przed momentem stworzoną procedurę podając wartości dla parametrów wejściowych, oraz nazwę zmiennej do której ma zostać przypisana wartość wyjściowa.

Jak widać, po wywołaniu procedury „wypisywacz” wartość zmiennej do której została przypisana wartość wewnątrz procedury „wypisywacz” uległa zmianie.

Parametrów wcale nie muszę wypisywać w dokładnie takiej kolejności w jakiej są zdeklarowane w definicji funkcji/procedury. Jedynym warunkiem jest określenie podczas wywoływania podprogramu do jakiej zmiennej przypisuję jaką wartość.

Ćwiczenia

1. Stwórz blok anonimowy posiadający zdeklarowaną zmienną rekordową odpowiadającą konstrukcji tabeli employees;

2. Stwórz procedurę posiadającą jedną stałą typu tekstowego, jedną zmienną typu liczbowego o wartości domyślnej 0, oraz jedną niezainicjowaną zmienną tekstową;

3. Rozbuduj procedurę z ćwiczenia nr. 2 w taki sposób by wprowadzała wartości do tabeli regions ze zmiennych. Procedura ma wyświetlać pod jakim ID został zapisany nowy wiersz. Wykonaj tą procedurę.

4. Stwórz procedurę która wyświetli na ekranie imię, nazwisko oraz numer telefonu pracownika o id 104

5. Stwórz blok anonimowy który sprawdzi czy wybrany pracownik ( wybierz dowolnego) jest czyimkolwiek managerem. Jakie zapytanie SQL jest do tego potrzebne możesz zapytać instruktora, lub wymyślić je sam - podpowiedź: w tabeli employees istnieje pole manager_id, określa ono pracownika o takim employee_id jak manager_id innej osoby. Ten pracownik jest jego managerem. Ilość pracowników które podlegają pod tą osobę można określić funkcją count(). Jeśli ilość osób podległych wynosi 0 - to znaczy że nie jest niczyim managerem. Jeśli ta osoba jest managerem, wyświetl informację o jego imieniu i nazwisku oraz ilości osób podlegających. Jeśli nie jest wypisz na ekranie imię, nazwisko oraz informację że nie jest niczyim managerem.

6. Przerób blok z powyższego ćwiczenia w taki sposób:

- jeśli pracownik jest managerem 1 osoby procedura ma wyświetlać informację "kierownik"

- jeśli pracownik jest managerem 3 lub więcej osób procedura ma wyświetlać informację "manager"

- jeśli pracownik jest managerem 5 lub więcej osób procedura ma wyświetlać informację "dyrektor"

- jeśli pracownik nie jest niczyim managerem procedura ma wyświetlać informację "pracownik"

7. Wyświetl na ekranie tyle razy literę X ile jest wierszy w tabeli jobs . Przy każdym wypisywanym X napisz który raz wykonywane są instrukcje w pętli. Wykonaj to ćwiczenie z wykorzystaniem każdej znanej Ci pętli występującej w PL/SQL.

8. Stwórz funkcję która będzie zwracać średnią zarobków w dziale którego numer funkcja będzie przyjmować jako parametr.

9. Stwórz procedurę która przyjmie jako parametr wejściowy wynik funkcji z ćwiczenia 8 a następnie wypisze ją na ekranie.

10. Stwórz procedurę która jako parametr wejściowy przyjmie id managera, a parametrem wyjściowym zwróci średnią zarobków osób podległych pod tego managera.

11. Przerób procedurę z powyższego ćwiczenia w taki sposób, aby posiadała tylko jeden obustronny parametr.

Loading...