Oracle Developer Suite Budowa aplikacji użytkownika końcowego
Składniki pakietu Oracle Developer Suite Oracle Forms Builder formularze (aplikacje dostępne z poziomu przeglądarki internetowej, model 3-warstwowy) Reports Builder raporty JDeveloper środowisko programistyczne dla Javy Oracle Designer modelowanie danych Oracle Repository zarządzanie tworzonymi projektami
Plan wykładu Język PL/SQL Tworzenie aplikacji jednoformularzowej Definiowanie zbiorów danych i powiązań między nimi Rozszerzanie funkcjonalności i upiększanie Wyzwalacze, pakiety i procedury wbudowane Menu Tworzenie raportów Model danych, układ raportu, podsumowania, wykresy
Aplikacja Oracle Forms Programowanie wizualne, zdarzeniowe i obiektowe Dwa sposoby patrzenia na powiązania między obiektami Formularz Blok Rekord Element Kanwa Formularz Okno Kanwa Element
Zdarzenia i wyzwalacze Wyzwalacze reakcją na zdarzenia Język PL/SQL opisuje działanie wyzwalaczy 3 poziomy obowiązywania (formularz, blok danych, element danych) 3 sposoby uruchamiania Execution Hierarchy (Override, Before, After)
Rodzaje wyzwalaczy Podział ze względu na prefix (WHENxxx, PRE-xxx, ON/KEY-xxx, POST-xxx) Podział ze względu na wykonywane czynności (przetwarzanie bloku, interface użytkownika, KEY-xxx, zależności między blokami, nawigowanie, obsługa myszy, zapytania, procedury zapisane, obsługa transakcji, walidacja)
Wyzwalacze związane z przetwarzaniem bloku WHEN-CREATE-RECORD WHEN-CLEAR-BLOCK WHEN-DATABASE-RECORD WHEN-REMOVE-RECORD
Interface z użytkownikiem WHEN-BUTTON-PRESSED WHEN-CHECKBOX-CHANGED WHEN-IMAGE-ACTIVATED KEY-xxx (KEY-DOWN, KEY-HELP, KEY-F2...) WHEN-RADIO-CHANGED WHEN-TIMER-EXPIRED WHEN-WINDOW-ACTIVATED WHEN-WINDOW-CLOSED WHEN-WINDOW-DEACTIVATED WHEN-WINDOW-RESIZED
Relacja między blokami ON-CHECK-DELETE-MASTER ON-CLEAR-DETAILS ON-POPULATE-DETAILS Komunikaty systemu ON-ERROR ON-MESSAGE
Wyzwalacze walidacyjne WHEN-VALIDATE-ITEM WHEN-VALIDATE-RECORD Realizacja zapytania PRE-QUERY POST-QUERY
Wyzwalacze nawigacyjne PRE-FORM, PRE-BLOCK, PRE-RECORD, PRE-TEXT-ITEM WHEN-NEW-FORM-INSTANCE, WHEN NEW-BLOCK-INSTANCE, WHEN NEW-RECORD-INSTANCE, WHEN-NEW-ITEM-INSTANCE POST-FORM, POST-BLOCK, POST RECORD, POST-TEXT-ITEM
Wyzwalacze transakcyjne PRE-COMMIT, PRE-DELETE, PRE-INSERT, PRE-UPDATE ON-DELETE, ON-INSERT, ON-LOCK, ON LOGON, ON-LOGOUT, ON-UPDATE POST-DATABASE-COMMIT, POST-DELETE, POST INSERT, POST-UPDATE
Model przetwarzania zdarzeń Formularz Blok A Element A1 Element A2 Blok B Element B1 Element B2 Element B3
Model przetwarzania zdarzeń -cd. Walidacja pola A2 When-Validate-Item Opuszczenie pola A2 Post-Text-Item Walidacja w ramach rekordu A When-Validate-Record Opuszczenie rekordu A Post-Record Opuszczenie bloku A Post-Block Wejście do bloku B Pre-Block Wejście do rekordu B Pre-Record Wejście do pola B1 Pre-Text-Item Blok B gotowy do wprowadzania When-New-Block-Instance Rekord B gotowy do wprowadzania When-New-Record-Instance Element B1 gotów do wprow. When-New-Item-Instance
Zakres obowiązywania wyzwalaczy Formularz Blok A Element A1 Element A2 Blok B Element B1 Element B2 Element B3
Oracle Developer Suite Język PL/SQL Wybrane konstrukcje
Struktura bloku Podstawowy element składni. Kod wyzwalacza to nienazwany blok. [ DECLARE -- deklaracje ] BEGIN -- instrukcje [ EXCEPTION -- reakcja na wyjątki ] END;
Deklaracje stałych i zmiennych Każda zmienna bądź stała musi być zadeklarowana. zmienna INTEGER; Dostępne są typy SQL (CHAR, DATE, NUMBER, itd.) jak i pochodzące z Ady (BOOLEAN, INTE- GER, itd.). Można używać typów złożonych RE- CORD i TABLE. Możliwe też deklarowanie stałych minimum CONSTANT REAL := 10.00;
Nadawanie wartości zmiennym -- inicjalizacja podczas deklaracji dalej BOOLEAN := TRUE; -- nadanie wartości w instrukcji przypisania zmienna := 10; -- użycie frazy INTO instrukcji SELECT SELECT nrp INTO NrPracownika FROM Pracownicy WHERE Nazwisko = 'Kowalski'
Atrybuty %TYPE i %ROWTYPE Zmienne oprócz wartości i typu posiadają atrybuty. Są one szczególnie przydatne przy odwoływaniu się do typów obiektów z bazy danych NrPracownika Pracownicy.Nrp%TYPE; Zespol Zespoly%ROWTYPE;
Deklaracje kursorów Oprócz zwykłych zmiennych można deklarować kursory CURSOR Kobiety IS SELECT * FROM Pracownicy WHERE Plec = 'K'; Kobieta Kobiety%ROWTYPE
Użycie kursorów Kursory pozwalają sekwencyjnie przetwarzać wiersze będące wynikiem zapytania OPEN Kobiety LOOP FETCH Kobiety INTO Kobieta; EXIT WHEN Kobiety%NOTFOUND; -- przetwarzanie END LOOP; CLOSE Kobiety;
Atrybuty kursorów Kursory posiadają dodatkowe atrybuty: %ROWTYPE %NOTFOUND %FOUND %ROWCOUNT (liczba już zwróconych wierszy) %ISOPEN
Instrukcja warunkowa IF warunek THEN instrukcje; [ ELSIF warunek THEN instrukcje; ] [ ELSE instrukcje; ] END IF;
Instrukcja pętli LOOP instrukcje; EXIT [ WHEN war ] instrukcje; END LOOP WHILE warunek LOOP instrukcje; END LOOP FOR i IN 1..Max LOOP instrukcje END LOOP FOR Kobieta IN Kobiety LOOP instrukcje; END LOOP
Wyjątki Są reakcją na różnorodne błędy w aplikacji. W efekcie wystąpienia wyjątku sterowanie przechodzi do bloku obsługi wyjątku. Wyjątek można zgłosić jawnie instrukcją RAISE EXCEPTION WHEN ZERO_DIVIDE THEN -- obsługa wyjątku; WHEN OTHERS THEN -- obsługa pozostałych wyjątków;
Oracle Developer Suite Inne wybrane obiekty
Rekord :SYSTEM Predefiniowany rekord zawierający różne informacje o stanie systemu. Wybrane pola: CURRENT_DATETIME, RECORD_STATUS, BLOCK_STATUS, FORM_STATUS, CURRENT_BLOCK, CURRENT_FORM, CURRENT_ITEM, LAST_QUERY, LAST_RECORD, MODE
Tryb pracy :SYSTEM.MODE Wyróżnia się 3 tryby pracy NORMAL, ENTER_QUERY i QUERY. Zmiana trybu pracy możliwa programowo za pomocą procedur wbudowanych: Enter_Query i Execute_Query IF :SYSTEM.MODE = NORMAL THEN Enter_Query; ELSE Execute_Query; END IF;
Procedury wbudowane Get_Item_Property, Set_Item_Property Get_Block_Property, Set_Block_Property... Go_Block, Go_Item Enter_Query, Execute_Query Message Show_LOV, Show_Alert
Alerty DECLARE wybor NUMBER; BEGIN... wybor := Show_Alert( 'ALERT_xx' ); IF wybor = ALERT_BUTTON1 THEN... END IF;... END;
Oracle Developer Suite Dziękuję za uwagę