Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00581 008230 10457862 na godz. na dobę w sumie
Oracle9i. Programowanie w języku PL/SQL - książka
Oracle9i. Programowanie w języku PL/SQL - książka
Autor: Liczba stron: 536
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-065-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> oracle - programowanie
Porównaj ceny (książka, ebook, audiobook).
Wykorzystanie wbudowanego w system Oracle języka PL/SQL w znaczący sposób zwiększa wydajność programisty systemów bazodanowych. PL/SQL łączy w sobie możliwości i elastyczność języka czwartej generacji (4GL) SQL z konstrukcjami proceduralnymi języka trzeciej generacji (3GL). Konstrukcje proceduralne są w pełni zintegrowane z Oracle SQL, co daje w rezultacie język strukturalny o ogromnym potencjale. Programy napisane w tym języku umożliwiają obsługę danych zarówno w samym systemie Oracle, jak i w zewnętrznych aplikacjach.

Książka 'Oracle9i. Programowanie w języku PL/SQL' wyjaśnia główne właściwości języka oraz różnice w PL/SQL dla różnych wersji bazy danych. Dzięki niej nauczysz się projektować, testować i uruchamiać aplikacje PL/SQL działające w wielu środowiskach, jak również poznasz szczegóły zastosowania języków SQL i PL/SQL, obsługi błędów, zbioru podprogramów i pakietów, a także wiele zaawansowanych właściwości. Niniejsza pozycja umożliwia:

Książka jest przeznaczona zarówno dla programistów, którzy muszą nauczyć się składni i poznać zaawansowane cechy języka PL/SQL, jak i dla tych, którzy jeszcze nie poznali innych języków trzeciej generacji. Przydatna, aczkolwiek nie wymagana, jest ogólna znajomość sytemu Oracle (łączenie się z bazą danych i jej wykorzystywanie, podstawy języka SQL, itp.).
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Oracle9i. Programowanie w jêzyku PL-SQL Autor: Scott Urman T³umaczenie: Rados³aw Meryk ISBN: 83-7361-065-0 Format: B5, stron: 536 Wykorzystanie wbudowanego w system Oracle jêzyka PL/SQL w znacz¹cy sposób zwiêksza wydajnoġæ programisty systemów bazodanowych. PL/SQL ³¹czy w sobie mo¿liwoġci i elastycznoġæ jêzyka czwartej generacji (4GL) SQL z konstrukcjami proceduralnymi jêzyka trzeciej generacji (3GL). Konstrukcje proceduralne s¹ w pe³ni zintegrowane z Oracle SQL, co daje w rezultacie jêzyk strukturalny o ogromnym potencjale. Programy napisane w tym jêzyku umo¿liwiaj¹ obs³ugê danych zarówno w samym systemie Oracle, jak i w zewnêtrznych aplikacjach. Ksi¹¿ka „Oracle9i. Programowanie w jêzyku PL/SQL” wyjaġnia g³ówne w³aġciwoġci jêzyka oraz ró¿nice w PL/SQL dla ró¿nych wersji bazy danych. Dziêki niej nauczysz siê projektowaæ, testowaæ i uruchamiaæ aplikacje PL/SQL dzia³aj¹ce w wielu ġrodowiskach, jak równie¿ poznasz szczegó³y zastosowania jêzyków SQL i PL/SQL, obs³ugi b³êdów, zbioru podprogramów i pakietów, a tak¿e wiele zaawansowanych w³aġciwoġci. Niniejsza pozycja umo¿liwia: • Zapoznanie siê z ró¿nymi ġrodowiskami programistycznymi jêzyka PL/SQL, których kopie znajduj¹ siê na do³¹czonej p³ycie CD • Poznanie szczegó³ów sk³adni jêzyka PL/SQL: zmienne, typy danych, wyra¿enia, operatory oraz struktury steruj¹ce • Zapewnienie spójnoġci danych dziêki instrukcjom sterowania transakcjami dostêpnym w SQL-u • Wykorzystanie kursorów, które pozwalaj¹ na tworzenie zapytañ zwracaj¹cych wiele wierszy oraz jawn¹ kontrolê przetwarzania instrukcji SQL • Tworzenie programów PL/SQL, które wykrywaj¹ i inteligentnie reaguj¹ na b³êdy fazy wykonania • Wykorzystanie mo¿liwoġci tworzenia kolekcji wielopoziomowych w systemie Oracle9i • Tworzenie i korzystanie z procedur, funkcji i pakietów • Tworzenie wyzwalaczy DML zastêpuj¹cych i systemowych w celu wymuszania z³o¿onych ograniczeñ danych • Korzystanie z zalet jêzyka PL/SQL, takich jak: procedury zewnêtrzne, wbudowany dynamiczny SQL, masowe powi¹zania oraz typy obiektowe Spis treści O Autorze...................................................................................................................13 Wstęp........................................................................................................................15 Część I Wstęp i środowiska programisty ...........................................21 Rozdział 1. Wprowadzenie do języka PL/SQL.............................................................23 Dlaczego język PL/SQL?...................................................j............................................ 23 PL/SQL a praca w sieci...................................................j......................................... 25 Normy...................................................j...................................................j.............. 26 Właściwości języka PL/SQL...................................................j....................................... 26 Struktura bloku ...................................................j...................................................j. 26 Obsługa błędów...................................................j...................................................j. 27 Zmienne i typy danych...................................................j.......................................... 27 Instrukcje warunkowe...................................................j........................................... 28 Konstrukcje pętli ...................................................j.................................................. 29 Kursory ...................................................j...................................................j............ 29 Procedury i funkcje ...................................................j.............................................. 30 Pakiety ...................................................j...................................................j............. 31 Kolekcje ...................................................j...................................................j........... 32 Konwencje stosowane w książce ...................................................j................................. 32 Wersje języka PL/SQL oraz bazy danych Oracle...................................................j..... 32 Czcionki ...................................................j...................................................j........... 34 Dokumentacja Oracle ...................................................j........................................... 34 Kod dostępny na płycie CD ...................................................j................................... 34 Przykładowe tabele ...................................................j...................................................j. 35 Podsumowanie...................................................j...................................................j........ 40 Rozdział 2. Środowiska programisty oraz wykonawcze...............................................41 Modele aplikacji a PL/SQL...................................................j......................................... 41 Model dwuwarstwowy...................................................j.......................................... 41 Model trójwarstwowy ...................................................j........................................... 45 Połączenie z bazą danych...................................................j...................................... 46 Narzędzia programisty PL/SQL...................................................j................................... 47 Program SQL*Plus...................................................j............................................... 48 Program Rapid SQL ...................................................j............................................. 52 Program DBPartner Debugger ...................................................j............................... 56 Program SQL Navigator...................................................j........................................ 60 Program TOAD...................................................j...................................................j. 64 Program SQL-Programmer...................................................j.................................... 68 Program PL/SQL Developer...................................................j.................................. 71 Narzędzia programistyczne — podsumowanie ...................................................j........ 73 Podsumowanie...................................................j...................................................j........ 74 6 Oracle9i. Programowanie w języku PL/SQL Część II Podstawowe właściwości języka PL/SQL ..............................75 Rozdział 3. Podstawy języka PL/SQL ........................................................................77 Blok PL/SQL...................................................j...................................................j.......... 77 Podstawowa struktura bloku...................................................j.................................. 82 Jednostki leksykalne ...................................................j...................................................j 84 Identyfikatory ...................................................j...................................................j... 84 Ograniczniki ...................................................j...................................................j..... 87 Literały...................................................j...................................................j............. 87 Komentarze ...................................................j...................................................j...... 89 Deklaracje zmiennych...................................................j................................................. 91 Składnia deklaracji ...................................................j............................................... 91 Inicjowanie zmiennych ...................................................j......................................... 93 Typy danych w języku PL/SQL...................................................j................................... 93 Typy skalarne ...................................................j...................................................j... 94 Typy złożone ...................................................j...................................................j.. 103 Typy odnośników...................................................j............................................... 103 Typy LOB ...................................................j...................................................j...... 103 Typy obiektowe ...................................................j................................................. 104 Wykorzystanie atrybutu Type...................................................j........................... 104 Podtypy definiowane przez użytkownika ...................................................j.............. 105 Konwersja pomiędzy typami danych ...................................................j.................... 106 Zakres i widoczność zmiennej ...................................................j............................. 108 Wyrażenia i operatory...................................................j............................................... 109 Przypisanie ...................................................j...................................................j..... 109 Wyrażenia ...................................................j...................................................j...... 110 Struktury sterowania PL/SQL ...................................................j................................... 113 Instrukcja IF-THEN-ELSE...................................................j.................................. 113 Instrukcja CASE ...................................................j................................................ 117 Pętle...................................................j...................................................j............... 121 Instrukcje GOTO oraz etykiety ...................................................j............................ 125 Dyrektywy pragma ...................................................j............................................. 127 Rekordy w języku PL/SQL ...................................................j....................................... 128 Przypisanie rekordu ...................................................j............................................ 129 Zastosowanie operatora ROWTYPE ...................................................j................. 131 Styl programowania w języku PL/SQL ...................................................j...................... 131 Wprowadzanie komentarzy ...................................................j................................. 132 Styl nazw zmiennych ...................................................j.......................................... 133 Stosowanie dużych liter ...................................................j...................................... 133 Stosowanie odstępów...................................................j.......................................... 133 Ogólne uwagi dotyczące stylu programowania ...................................................j...... 134 Podsumowanie...................................................j...................................................j...... 134 Rozdział 4. SQL w języku PL/SQL ...........................................................................135 Instrukcje SQL ...................................................j...................................................j..... 135 Wykorzystanie instrukcji SQL w języku PL/SQL...................................................j.. 136 Stosowanie dynamicznego SQL...................................................j........................... 137 Stosowanie instrukcji DML w języku PL/SQL...................................................j............ 137 Instrukcja SELECT ...................................................j............................................ 139 Instrukcja INSERT...................................................j............................................. 141 Instrukcja UPDATE ...................................................j........................................... 142 Instrukcja DELETE...................................................j............................................ 143 Klauzula WHERE ...................................................j.............................................. 144 Wiązania zbiorcze ...................................................j.............................................. 147 Klauzula RETURNING ...................................................j...................................... 149 Spis treści 7 Odnośniki do tabel...................................................j.............................................. 150 Powiązania bazy danych ...................................................j..................................... 151 Synonimy ...................................................j...................................................j....... 151 Pseudokolumny ...................................................j...................................................j.... 152 Pseudokolumny CURRVAL oraz NEXTVAL...................................................j....... 152 Pseudokolumna LEVEL...................................................j...................................... 153 Pseudokolumna ROWID...................................................j..................................... 153 Pseudokolumna ROWNUM ...................................................j................................ 154 Instrukcje GRANT i REVOKE. Uprawnienia ...................................................j............. 154 Uprawnienia obiektowe a uprawnienia systemowe ...................................................j 155 Instrukcje GRANT oraz REVOKE...................................................j....................... 155 Role ...................................................j...................................................j............... 157 Sterowanie transakcjami ...................................................j........................................... 159 Instrukcja COMMIT a instrukcja ROLLBACK ...................................................j..... 159 Punkty zachowania...................................................j............................................. 160 Transakcje a bloki ...................................................j.............................................. 161 Transakcje autonomiczne ...................................................j.................................... 162 Podsumowanie...................................................j...................................................j...... 167 Rozdział 5. Wbudowane funkcje SQL.......................................................................169 Wstęp ...................................................j...................................................j.................. 169 Funkcje znakowe zwracające wartości znakowe...................................................j.......... 170 Funkcje SUBSTR, SUBSTRB, SUBSTRC, SUBSTR2 oraz SUBSTR4 ..................... 173 SOUNDEX...................................................j...................................................j..... 174 Funkcje znakowe zwracające wartości liczbowe...................................................j.......... 175 Funkcje INSTR, INSTRB, INSTRC, INSTR2 oraz INSTR4 ..................................... 176 Funkcje LENGTH, LENGTHB, LENGTHC, LENGTH2 ? oraz LENGTH4............... 177 Funkcje NLS ...................................................j...................................................j........ 178 Funkcje numeryczne ...................................................j................................................ 180 Funkcja WIDTH_BUCKET ...................................................j................................ 181 Funkcje związane z datą ...................................................j........................................... 182 Arytmetyka dat ...................................................j.................................................. 184 Funkcje konwersji ...................................................j...................................................j. 186 Funkcja TO_CHAR (daty lub etykiety) ...................................................j................ 189 Funkcja TO_CHAR (liczby)...................................................j................................ 191 Funkcja TO_DATE ...................................................j............................................ 193 Funkcja TO_NUMBER ...................................................j...................................... 193 Funkcje TO_TIMESTAMP oraz TO_TIMESTAMP_TZ .......................................... 194 Funkcje agregacji oraz funkcje analityczne ...................................................j................. 194 Inne funkcje ...................................................j...................................................j......... 196 Funkcja DUMP...................................................j.................................................. 199 Funkcja USERENV...................................................j............................................ 201 Podsumowanie...................................................j...................................................j...... 202 Rozdział 6. Kursory ................................................................................................203 Czym jest kursor? ...................................................j...................................................j. 203 Przetwarzanie kursorów jawnych...................................................j......................... 204 Przetwarzanie kursorów niejawnych ...................................................j.................... 212 Pętle pobierania danych kursora ...................................................j................................ 214 Pętle proste...................................................j...................................................j..... 214 Pętle WHILE ...................................................j...................................................j.. 216 Pętle FOR kursora...................................................j.............................................. 217 Wyjątek NO_DATA_FOUND a atrybut NOTFOUND .......................................... 219 Kursory z klauzulą FOR UPDATE instrukcji SELECT............................................. 219 8 Oracle9i. Programowanie w języku PL/SQL Zmienne kursora ...................................................j...................................................j... 223 Deklaracja zmiennej kursora...................................................j................................ 224 Przydzielenie obszaru pamięci dla zmiennych kursora .............................................. 225 Otwieranie zmiennej kursora dla zapytania ...................................................j........... 226 Zamykanie zmiennych kursora ...................................................j............................ 227 Pierwszy przykład zmiennej kursora ...................................................j.................... 227 Drugi przykład zmiennej kursora ...................................................j......................... 229 Ograniczenia użycia zmiennych kursora ...................................................j............... 230 Podsumowanie...................................................j...................................................j...... 231 Rozdział 7. Obsługa błędów ....................................................................................233 Czym jest wyjątek? ...................................................j.................................................. 233 Deklarowanie wyjątków...................................................j...................................... 235 Zgłaszanie wyjątków ...................................................j.......................................... 239 Obsługa wyjątków...................................................j.............................................. 240 Dyrektywa pragma EXCEPTION_INIT ...................................................j............... 246 Zastosowanie funkcji RAISE_APPLICATION_ERROR .......................................... 247 Propagacja wyjątków ...................................................j............................................... 250 Wyjątki wywołane w sekcji wykonania ...................................................j................ 250 Wyjątki zgłaszane w sekcji deklaracji...................................................j................... 252 Wyjątki zgłaszane w sekcji wyjątków...................................................j................... 254 Wskazówki dotyczące wyjątków ...................................................j............................... 256 Zakres wyjątków...................................................j................................................ 256 Unikanie nieobsługiwanych wyjątków...................................................j.................. 257 Maskowanie lokalizacji błędu...................................................j.............................. 258 Ogólny program obsługi błędów ...................................................j................................ 259 Podsumowanie...................................................j...................................................j...... 266 Rozdział 8. Kolekcje...............................................................................................267 Deklaracje i stosowanie typów kolekcji ...................................................j...................... 267 Tabele indeksowane ...................................................j........................................... 268 Tabele zagnieżdżone...................................................j........................................... 272 Tablice VARRAY ...................................................j.............................................. 276 Kolekcje wielopoziomowe ...................................................j.................................. 278 Porównanie pomiędzy typami kolekcji ...................................................j................. 279 Kolekcje w bazie danych ...................................................j.......................................... 281 Implikacje dotyczące kolekcji zapisanych w bazie danych......................................... 281 Modyfikowanie całych kolekcji ...................................................j........................... 285 Działania z indywidualnymi elementami kolekcji ...................................................j.. 291 Metody kolekcji ...................................................j...................................................j.... 297 EXISTS ...................................................j...................................................j......... 297 COUNT ...................................................j...................................................j......... 299 LIMIT...................................................j...................................................j............ 300 FIRST i LAST ...................................................j...................................................j 301 NEXT i PRIOR...................................................j.................................................. 301 EXTEND ...................................................j...................................................j....... 302 TRIM...................................................j...................................................j............. 304 DELETE ...................................................j...................................................j........ 306 Podsumowanie...................................................j...................................................j...... 308 Część III Dodatkowe właściwości języka PL/SQL ..............................309 Rozdział 9. Tworzenie procedur, funkcji i pakietów.................................................311 Procedury i funkcje ...................................................j.................................................. 311 Tworzenie podprogramu ...................................................j..................................... 312 Parametry podprogramów ...................................................j................................... 318 Spis treści 9 Instrukcja CALL ...................................................j................................................ 336 Procedury a funkcje...................................................j............................................ 339 Pakiety...................................................j...................................................j................. 339 Specyfikacja pakietu ...................................................j........................................... 339 Treść pakietu ...................................................j...................................................j.. 341 Pakiety i zakres ...................................................j.................................................. 343 Przeciążanie podprogramów pakietowych...................................................j............. 345 Inicjalizacja pakietu ...................................................j............................................ 348 Podsumowanie...................................................j...................................................j...... 350 Rozdział 10. Zastosowanie procedur, funkcji i pakietów...........................................351 Położenie podprogramów...................................................j.......................................... 351 Podprogramy składowane oraz słownik danych...................................................j..... 351 Podprogramy lokalne ...................................................j.......................................... 354 Podprogramy składowane a podprogramy lokalne ...................................................j. 359 Zagadnienia dotyczące podprogramów składowanych i pakietów .................................... 360 Zależności pomiędzy podprogramami ...................................................j.................. 360 Stan pakietów w czasie wykonywania ...................................................j.................. 370 Uprawnienia i podprogramy składowane ...................................................j.............. 375 Stosowanie składowanych funkcji w instrukcjach SQL...................................................j 385 Poziomy czystości ...................................................j.............................................. 386 Parametry domyślne ...................................................j........................................... 393 Wywołanie funkcji składowanych z instrukcji SQL w systemie Oracle8i.................... 393 Przytwierdzanie obiektów w obszarze wspólnym ...................................................j........ 396 KEEP...................................................j...................................................j............. 397 UNKEEP ...................................................j...................................................j....... 398 SIZES ...................................................j...................................................j............ 398 ABORTED_REQUEST_THRESHOLD ...................................................j.............. 398 Podsumowanie...................................................j...................................................j...... 398 Rozdział 11. Wyzwalacze..........................................................................................399 Rodzaje wyzwalaczy ...................................................j................................................ 399 Tworzenie wyzwalaczy...................................................j............................................. 403 Tworzenie wyzwalaczy DML...................................................j.............................. 403 Tworzenie wyzwalaczy zastępujących...................................................j.................. 413 Tworzenie wyzwalaczy systemowych ...................................................j.................. 419 Inne zagadnienia związane z wyzwalaczami ...................................................j......... 426 Wyzwalacze a słownik danych ...................................................j............................ 430 Tabele mutujące...................................................j...................................................j.... 432 Przykład tabeli mutującej ...................................................j.................................... 434 Rozwiązanie problemu błędu tabeli mutującej...................................................j....... 435 Podsumowanie...................................................j...................................................j...... 438 Rozdział 12. Zaawansowane właściwości .................................................................439 Właściwości języka ...................................................j.................................................. 439 Procedury zewnętrzne...................................................j......................................... 439 Wbudowany dynamiczny SQL ...................................................j............................ 442 Masowe powiązania...................................................j............................................ 447 Typy obiektowe ...................................................j................................................. 454 Duże obiekty...................................................j...................................................j... 458 Potokowe funkcje tabel...................................................j....................................... 461 Zaawansowane pakiety ...................................................j............................................. 462 DBMS_SQL ...................................................j...................................................j... 462 DBMS_PIPE ...................................................j...................................................j.. 463 DBMS_ALERT ...................................................j................................................. 465 10 Oracle9i. Programowanie w języku PL/SQL UTL_FILE ...................................................j...................................................j..... 466 UTL_TCP ...................................................j...................................................j...... 467 UTL_SMTP ...................................................j...................................................j... 468 UTL_HTTP...................................................j...................................................j.... 469 UTL_INADDR ...................................................j.................................................. 470 DBMS_JOB ...................................................j...................................................j... 470 DBMS_LOB...................................................j...................................................j... 472 Podsumowanie...................................................j...................................................j...... 475 Dodatki ...................................................t............................................477 Dodatek A Pakiety dostępne w języku PL/SQL .......................................................479 Opis pakietów ...................................................j...................................................j....... 479 DBMS_ALERT ...................................................j................................................. 479 DBMS_APPLICATION_INFO...................................................j........................... 480 DBMS_AQ...................................................j...................................................j..... 480 DBMS_AQADM ...................................................j............................................... 480 DBMS_AQELM ...................................................j................................................ 480 DBMS_BACKUP_RESTORE ...................................................j............................ 481 DBMS_DDL ...................................................j...................................................j.. 481 DBMS_DEBUG ...................................................j................................................ 481 DBMS_DEFER ...................................................j................................................. 482 DBMS_DEFER_QUERY ...................................................j................................... 482 DBMS_DEFER_SYS ...................................................j......................................... 482 DBMS_DESCRIBE ...................................................j........................................... 482 DBMS_DISTRIBUTED_TRUST_ADMIN ...................................................j.......... 483 DBMS_FGA...................................................j...................................................j... 483 DBMS_FLASHBACK...................................................j........................................ 483 DBMS_HS ...................................................j...................................................j..... 483 DBMS_HS_PASSTHROUGH ...................................................j............................ 484 DBMS_IOT...................................................j...................................................j.... 484 DBMS_JAVA...................................................j...................................................j. 484 DBMS_JOB ...................................................j...................................................j... 484 DBMS_LDAP ...................................................j...................................................j 485 DBMS_LIBCACHE ...................................................j........................................... 485 DBMS_LOB...................................................j...................................................j... 485 DBMS_LOCK ...................................................j...................................................j 485 DBMS_LOGMNR ...................................................j............................................. 485 DBMS_LOGMNR_CDC_PUBLISH ...................................................j................... 486 DBMS_LOGMNR_CDC_SUBSCRIBE...................................................j............... 486 DBMS_LOGMNR_D...................................................j......................................... 486 DBMS_METADATA...................................................j......................................... 486 DBMS_MVIEW (DBMS_SNAPSHOT) ...................................................j.............. 487 DBMS_OBFUSCATION_TOOLKIT ...................................................j.................. 487 DBMS_ODCI ...................................................j...................................................j. 487 DBMS_OFFLINE_OG ...................................................j....................................... 487 DBMS_OFFLINE_SNAPSHOT ...................................................j......................... 487 DBMS_OLAP ...................................................j...................................................j 488 DBMS_ORACLE_TRACE_AGENT...................................................j................... 488 DBMS_ORACLE_TRACE_USER ...................................................j...................... 488 DBMS_OUTLN ...................................................j................................................ 488 DBMS_OUTLN_EDIT ...................................................j...................................... 488 DBMS_OUTPUT ...................................................j.............................................. 489 DBMS_PCLXUTIL ...................................................j........................................... 489 Spis treści 11 DBMS_PIPE ...................................................j...................................................j.. 489 DBMS_PROFILER...................................................j............................................ 489 DBMS_RANDOM ...................................................j............................................. 490 DBMS_RECTIFIER_DIFF...................................................j................................. 490 DBMS_REDIFINITION...................................................j..................................... 490 DBMS_REFRESH ...................................................j............................................. 490 DBMS_REPAIR ...................................................j................................................ 490 DBMS_REPCAT, DBMS_REPCAT_ADMIN, DBMS_REPCAT_ INSTANTIATE, DBMS_REPCAT_RGT oraz DBMS_REPUTIL...................................................j. 491 DBMS_RESOURCE_MANAGER i DBMS_RESOURCE_ MANAGER_PRIVS....... 491 DBMS_RESUMABLE ...................................................j....................................... 491 DBMS_RLS ...................................................j...................................................j... 492 DBMS_ROWID...................................................j................................................. 492 DBMS_SESSION ...................................................j.............................................. 492 DBMS_SHARED_POOL ...................................................j................................... 492 DBMS_SPACE i DBMS_SPACE_ADMIN...................................................j.......... 493 DBMS_SQL ...................................................j...................................................j... 493 DBMS_STANDARD i STANDARD ...................................................j................... 493 DBMS_STATS..................................................j...................................................j 493 DBMS_TRACE ...................................................j................................................. 493 DBMS_TRANSACTION ...................................................j................................... 494 DBMS_TRANSFORM...................................................j....................................... 494 DBMS_TTS ...................................................j...................................................j... 494 DBMS_TYPES..................................................j...................................................j 494 DBMS_UTILITY ...................................................j.............................................. 495 DBMS_WM ...................................................j...................................................j... 495 DBMS_XMLQUERY, DBMS_XMLSAVE i XMLGEN .......................................... 495 DEBUG_EXTPROC ...................................................j.......................................... 495 SDO_CS, SDO_GEOM, SDE_LRS, SDO_MIGRATE i SDO_TUNE ....................... 495 UTL_COLL ...................................................j...................................................j... 496 UTL_ENCODE ...................................................j................................................. 496 UTL_FILE ...................................................j...................................................j..... 496 UTL_HTTP...................................................j...................................................j.... 496 UTL_INADDR ...................................................j.................................................. 497 UTL_PG ...................................................j...................................................j........ 497 UTL_RAW...................................................j...................................................j..... 497 UTL_REF ...................................................j...................................................j...... 497 UTL_SMTP ...................................................j...................................................j... 498 UTL_TCP ...................................................j...................................................j...... 498 UTL_URL...................................................j...................................................j...... 498 Dodatek B Słowa kluczowe w języku PL/SQL..........................................................499 Tablica zarezerwowanych słów ...................................................j................................. 499 Dodatek C Słownik danych ....................................................................................503 Czym jest słownik danych? ...................................................j....................................... 503 Standardy nazewnictwa...................................................j....................................... 503 Uprawnienia ...................................................j...................................................j... 504 Rodzaje perspektyw ...................................................j........................................... 504 Zestawienie dostępnych perspektyw ...................................................j.......................... 505 Relacyjne klastry, tabele i perspektywy ...................................................j................ 505 Kolekcje, obiekty LOB oraz typy obiektowe...................................................j......... 507 Perspektywy wprowadzone w systemach Oracle8i oraz Oracle9i .............................. 508 Inne obiekty bazy danych...................................................j.................................... 510 Partycje i podpartycje ...................................................j......................................... 511 12 Oracle9i. Programowanie w języku PL/SQL Indeksy ...................................................j...................................................j.......... 513 Materializowane perspektywy, podsumowania i migawki.......................................... 514 Podprogramy, metody i wyzwalacze ...................................................j.................... 516 Kody źródłowe i błędy kompilacji...................................................j........................ 517 Zależności i ograniczenia ...................................................j.................................... 518 Statystyki i audyt..................................................j................................................. 518 Uprawnienia i ich nadawanie...................................................j..................................... 519 Skorowidz ...............................................................................................................521 Rozdział 11. Wyzwalacze Wyzwalacze stanowią czwarty typ bloków nazwanych PL/SQL. Posiadają wiele właści- wości charakterystycznych dla podprogramów (które omówiono w poprzednich dwóch podrozdziałach), ale także różnią się od nich w istotny sposób. W niniejszym rozdziale Czytelnik zapozna się ze sposobem tworzenia wyzwalaczy oraz z niektórymi możliwymi zastosowaniami tych obiektów. Rodzaje wyzwalaczy Wyzwalacze są podobne do procedur lub funkcji pod tym względem, że są nazwanymi blokami PL/SQL, w których występują sekcje deklaracji, wykonania i obsługi wyjątków. Podobnie jak pakiety, wyzwalacze muszą być składowane jako samodzielne obiekty w bazie danych i nie mogą występować lokalnie w bloku lub w pakiecie. Jak napisano w ostatnich dwóch rozdziałach, procedura jest wykonywana jawnie z innego bloku za pośrednictwem wywołania procedury, które daje możliwość przekazania argumentów. Wyzwalacz natomiast jest wykonywany niejawnie, jeśli wystąpi zdarzenie wyzwalają- ce. Poza tym wyzwalacz nie akceptuje argumentów. Rozpoczęcie wykonywania wyzwa- lacza jest nazywane uruchamianiem wyzwalacza (firing). Zdarzeniem wyzwalającym mo- że być operacja DML (instrukcje +05 46, 72 #6 lub . 6 ) wykonywana dla tabeli bazy danych lub odpowiedniego rodzaju perspektyw. W systemie Oracle8i rozszerzono możli- wości uruchamiania wyzwalaczy o zdarzenia systemowe, takie jak: uruchomienie lub za- mknięcie bazy danych, a także określone rodzaje operacji DDL. Zdarzenia wyzwalające zostaną szczegółowo omówione w dalszej części tego rozdziału. Wyzwalacze można stosować do wielu celów, przykładowo:  Utrzymywanie złożonych więzów integralności, niemożliwych do uzyskania przez więzy deklaracji uaktywniane podczas tworzenia tabeli.  Kontrola danych w tabeli przez rejestrowanie dokonywanych zmian oraz autorów tych zmian.  Automatyczne przekazywanie do innych programów informacji, że jest wymagane podjęcie określonych działań w razie dokonania zmian w tabeli.  Publikowanie informacji na temat różnego rodzaju zdarzeń w środowisku publikowanie-subskrypcja. 400 Część III  Dodatkowe właściwości języka PL/SQL Istnieją trzy podstawowe rodzaje wyzwalaczy: DML, zastępujące (instead-of) oraz syste- mowe. W następnych podrozdziałach będzie omówiony każdy z tych typów, szczegó- łowo w podrozdziale „Tworzenie wyzwalaczy”. W systemie Oracle8i oraz w wersjach wyższych istnieje możliwość pisania wyzwalaczy zarówno w języku PL/SQL, jak i innych. Wyzwalacze te można następnie wywołać ja- ko procedury zewnętrzne. Więcej informacji na ten temat znajduje się w podrozdziale „Treść wyzwalaczy”, a także w rozdziale 12. Wyzwalacze DML Wyzwalacze DML są uruchamiane przez instrukcje DML, a typ wyzwalacza DML jest określany przez typ instrukcji. Można je definiować dla operacji +05 46, 72 #6 lub . 6 , uruchamiać przed operacją lub po niej, a także w związku z operacjami dotyczącymi wier- sza lub instrukcji. Przykładowo, może zachodzić potrzeba śledzenia danych statystycznych, dotyczących róż- nych specjalności, włącznie z liczbą studentów zarejestrowanych i liczbą zaliczeń. Dane te mogą być przechowywane w tabeli UVCV[UV[MCAURGELCNPQUEK: Dostępne na płycie CD jako część skryptu tabele.sql. 4 #6 6#$. URGEAUVCVU URGELCNPQUE8#4 *#4   QIQNGOA\CNKE\GPKC07/$ 4 QIQNGOAUVWFGPEK07/$ 4  W celu zapewnienia ciągłej aktualności danych z tabeli URGEAUVCVU można utworzyć wy- zwalacz dla tabeli UVWFGPEK, który będzie poprawiał tę pierwszą po każdej zmianie dokona- nej w tabeli UVWFGPEK. Zadanie to może wykonywać poniższy wyzwalacz 7CMVWCNPKL 5RGE5VCVU. Po każdej operacji DML wykonanej na tabeli UVWFGPEK nastąpi uruchomienie wyzwalacza. Zawartość wyzwalacza wykonuje zapytanie na tabeli UVWFGPEK i uaktualnia statystykę w URGEAUVCVU: Dostępne na płycie CD w skrypcie UaktualnijSpecStats.sql. 4 #6 144 2.# 64+)) 47CMVWCNPKL5RGE5VCVU   CRGYPKCEKæIđæCMVWCNPQħèVCDGNKURGEAUVCVU YRTQYCF\CLæE\OKCP[FQMQP[YCPGYVCDGNKUVWFGPEK  #(6 4+05 4614 . 6 1472 #6 10UVWFGPEK .#4  74514MA5VCV[UV[MC+5 5 . 6URGELCNPQUE 1706 QIQNGOAUVWFGPEK 57/ DKG\CEGA\CNKE\GPKC QIQNGOA\CNKE\GPKC (41/UVWFGPEK )4172$;URGELCNPQUE Rozdział 11.  Wyzwalacze 401 $ )+0  0CLRKGTY\QUVCPæWUWPKúVGYKGTU\G\VCDGNKURGEAUVCVUR5RQYQFWLGVQY[\GTQYCPKG UVCV[UV[MKKMQPKGE\PQħèTQ\NKE\GPKCYU\[UVMKEJUVWFGPVRÎYQMTGħNQPGL URGELCNPQħEK   . 6 (41/URGEAUVCVU  0CUVúRPKGDúF\KGY[MQPCPCRúVNCFNCMCľFGLURGELCNPQħEKKRYUVCYKQPGQFRQYKGFPKG YKGTU\GFQVCDGNKURGEAUVCVU  (14\A4GMQTF5VCVKPMA5VCV[UV[MC.112 +05 46+061URGEAUVCVU URGELCNPQUEQIQNGOA\CNKE\GPRKCQIQNGOAUVWFGPEK 8#.7 5 \A4GMQTF5VCVURGELCNPQUE\A4GMQTF5VCVQIQNGOA\RCNKE\GPKC \A4GMQTF5VCVQIQNGOAUVWFGPEK   0 .112 0 7CMVWCNPKL5RGE5VCVU Wyzwalacz można uruchomić dla więcej niż jednego typu instrukcji wyzwalających. Na przykład, wyzwalacz 7CMVWCNPKL5RGE5VCVU można uruchomić dla instrukcji +05 46, 72 #6 oraz . 6 . Zdarzenie wyzwalające określa jedną operację DML lub więcej, które powinny spowodować uruchomienie wyzwalacza. Wyzwalacze zastępujące W systemie Oracle8 wprowadzono dodatkowy typ wyzwalacza. Wyzwalacze zastępujące (Instead-of) mogą być definiowane tylko dla perspektyw (relacyjnych lub obiektowych). Inaczej niż wyzwalacze DML, które uruchamiają się obok operacji DML, wyzwalacze za- stępujące uruchamiają się zamiast wyzwalającej je instrukcji DML. Wyzwalacze zastę- pujące działają na poziomie wierszy. Dla przykładu proszę przeanalizować perspektywę ITWR[ARQMQLG: Dostępne na płycie CD jako część skryptu Zamiast.sql. 4 #6 144 2.# 8+ 9ITWR[ARQMQLG#5 5 . 6Y[F\KCNMWTUDWF[PGMRQMQLAPWOGT (41/RQMQLGITWR[ 9* 4 RQMQLGRQMQLAKFITWR[RQMQLAKF Bezpośrednia operacja wstawienia wierszy do tej perspektywy jest nieprawidłowa, ponie- waż jest to złączenie dwóch tabel, a do wykonania operacji +05 46 potrzebna jest mody- fikacja obu tabel. Taką sytuację pokazano w poniższej sesji programu SQL*Plus: Dostępne na płycie CD jako część skryptu Zamiast.sql. 53. +05 46+061ITWR[ARQMQLG Y[F\KCNMWTUDWF[PGMRQMQLAPWOGT 8#.7 5 /7  $WF[PGM/W\[MK   +05 46+061ITWR[ARQMQLG Y[F\KCNMWTUDWF[PGMRQMQLAPWOGT  $Đä YNKPKK 14#PKGOQľPCOQF[HKMQYCèYKúEGLPKľLGFPGLVCDGNKDC\QYGLR\CRQħTGFPKEVYGO RGTURGMV[Y[DúFæEGL\đæE\GPKGO 402 Część III  Dodatkowe właściwości języka PL/SQL Można jednak utworzyć wyzwalacz zastępujący, wykonujący poprawne operacje dla in- strukcji +05 46, a mianowicie modyfikację obu tabel: Dostępne na płycie CD jako część skryptu Zamiast.sql. 4 #6 64+)) 4+PUGTV)TWR[2QMQLG +056 # 1(+05 4610ITWR[ARQMQLG .#4 \ARQMQL+ RQMQLGRQMQLAKF6;2  $ )+0 0CLRKGTYQMTGħNQPQKFGPV[HKMCVQTRQMQLW 5 . 6RQMQLAKF +061\ARQMQL+ (41/RQMQLG 9* 4 DWF[PGMPGYDWF[PGM #0 RQMQLAPWOGTPGYRQMQLAPWOGT 6GTC\WCMVWCNPKCUKúVCDGNúITWR[ 72 #6 )472; 5 6RQMQLAKF\ARQMQL+ 9* 4 Y[F\KCNPGYY[F\KCN #0 MWTUPGYMWTU 0 )TWR[2QMQLG+PUGTV Dzięki wyzwalaczowi )TWR[2QMQLG+PUGTV wykonanie instrukcji +05 46 kończy się po- wodzeniem. W obecnej postaci wyzwalacz )TWR[2QMQLG+PUGTV nie sprawdza błędów. Niedogodność ta zostanie zlikwidowana w dalszej części tego rozdziału, w podrozdziale „Tworzenie wy- zwalaczy zastępujących”. Wyzwalacze systemowe W systemie Oracle8i oraz w systemach wyższych wprowadzono trzeci typ wyzwalaczy — wyzwalacze systemowe, które uruchamiają się w przypadku wystąpienia zdarzenia sys- temowego, takiego jak uruchomienie lub zatrzymanie bazy danych, nie zaś w przypadku wykonania instrukcji DML na tabeli. Wyzwalacz systemowy można także uruchomić dla operacji DDL, jak np. utworzenia tabeli. Przykładowo, chęć zarejestrowania utwo- rzenia obiektu słownika danych można zrobić poprzez następującą tabelę: Dostępne na płycie CD jako część skryptu ZarejestrujOperTworzenia.sql. 4 #6 6#$. VYQT\GPKGAFFN KFAW\[VMQYPKMC8#4 *#4   V[RAQDKGMVW8#4 *#4   PC\YCAQDKGMVW8#4 *#4   YNCUEKEKGNAQDKGMVW8#4 *#4   FCVCAWVYQT\GPKC #6  Rozdział 11.  Wyzwalacze 403 Po sformułowaniu tej tabeli można utworzyć wyzwalacz systemowy, którego zadaniem bę- dzie rejestrowanie interesujących informacji. Zadanie to wypełni wyzwalacz CTGLGUVTWL 1RGT6YQT\GPKC — po każdej operacji 4 #6 w bieżącym schemacie zarejestruje informa- cje na temat właśnie utworzonego obiektu w tabeli VYQT\GPKGAFFN: Dostępne na płycie CD jako część skryptu ZarejestrujOperTworzenia.sql. 4 #6 144 2.# 64+)) 4 CTGLGUVTWL1RGT6YQT\GPKC #(6 4 4 #6 10 #6#$#5 $ )+0 +05 46+061VYQT\GPKGAFFN KFAW\[VMQYPKMCV[RAQDKGMVWPC\YCAQDKRGMVW YNCUEKEKGNAQDKGMVWFCVCARWVYQT\GPKC 8#.7 5 75 45;5 + 6+10#4;A1$,A6;2 5;5 + 6+10#4;A1$,A0#/  5;5 + 6+10#4;A1$,A190 45;5 #6  0  CTGLGUVTWL1RGT6YQT\GPKC Tworzenie wyzwalaczy Niezależnie od typu wszystkie wyzwalacze tworzy się za pomocą tej samej składni, która — ogólnie — jest następująca: 4 #6 =144 2.# ?64+)) 4PC\YCAY[\YCNCE\C ]$ (14 ^#(6 4^+056 # 1(_\FCT\GPKGAY[\YCNCLCEG =MNCW\WNCA\AQFYQNCPKGO? =9* 0YCTWPGMAY[\YCNCE\C? =(14 # *419? VTGUEAY[\YCNCE\C W składni PC\YCAY[\YCNCE\C jest nazwą wyzwalacza, \FCT\GPKGAY[\YCNCLCEG określa zdarzenie uruchamiające wyzwalacz (może również zawierać odwołanie do tabeli lub perspektywy), natomiast VTGUEAY[\YCNCE\C jest głównym kodem wyzwalacza. Argument MNCW\WNCA\AQFYQNCPKGO jest wykorzystywany w celu odwołania do danych w modyfikowa- nym wierszu pod inną nazwą. Najpierw następuje ocena warunku YCTWPGMAY[\YCNCE\C w klauzuli 9* 0. Treść wyzwalacza jest wykonywana tylko wtedy, kiedy ten warunek przyjmie wartość 647 . Więcej przykładów różnych rodzajów wyzwalaczy przeanalizo- wano w kolejnych podrozdziałach. Rozmiar treści wyzwalacza nie może przekroczyć 32K. W przypadku większego wyzwa- lacza można zredukować jego objętość poprzez przeniesienie fragmentów kodu do od- dzielnie skompilowanych pakietów lub procedur składowanych i wywołanie ich z treści wyzwalacza. Ze względu na dużą częstotliwość wykonywania dobrą praktyką jest utrzy- mywanie małego rozmiaru treści wyzwalaczy. Tworzenie wyzwalaczy DML Wyzwalacze DML są uruchamiane dla operacji +05 46, 72 #6 lub . 6 dotyczących tabeli bazy danych. Następuje to przed wykonaniem określonej operacji lub po. Wyzwa- lacze mogą być wykonane raz w stosunku do wiersza, którego operacja dotyczy lub raz 404 Część III  Dodatkowe właściwości języka PL/SQL w stosunku do określonej operacji. Połączenie tych czynników określa rodzaj wyzwalacza. W sumie istnieje 12 możliwych typów: 3 rodzaje instrukcji × 2 rodzaje czasów × 2 moż- liwe poziomy. Przykładowo, wszystkie podane niżej typy wyzwalacza są prawidłowe:    $ (14 (przed) na poziomie instrukcji 72 #6 . #(6 4 (po) instrukcji +05 46 na poziomie wiersza. $ (14 (przed) instrukcją . 6 na poziomie wiersza. W tabeli 11.1 znajduje się zestawienie tych możliwości. Wyzwalacz jest także uruchamia- ny dla więcej niż jednego typu instrukcji DML dla określonej tabeli, np. +05 46 oraz 72 #6 . Kod w wyzwalaczu jest wykonywany razem z samą instrukcją wyzwalającą, jako część tej samej transakcji. Tabela 11.1. Typy wyzwalaczy Kategoria Wartości Komentarz Instrukcja +05 46, . 6 , 72 #6 Definiuje rodzaj instrukcji DML powodującej uruchomienie wyzwalacza. Czas $ (14 (przed) lub #(6 4 (po) Określa, czy wyzwalacz zostanie uruchomiony przed wykonaniem Poziom Wiersz lub instrukcja instrukcji czy też po jej wykonaniu. Jeżeli dany wyzwalacz istnieje na poziomie wiersza, jest uruchamiany po jednym razie dla każdego wiersza, którego dotyczy instrukcja. Jeżeli dany wyzwalacz jest wyzwalaczem na poziomie instrukcji, to jest uruchamiany jeden raz — przed wykonaniem instrukcji albo po. Wyzwalacz na poziomie wiersza jest identyfikowany przez klauzulę (14 # *419 w definicji wyzwalacza. Dla tabeli można zdefiniować dowolną liczbę wyzwalaczy włącznie z możliwością zde- finiowania więcej niż jednego wyzwalacza dla określonego rodzaju instrukcji DML, np. można zdefiniować dwa wyzwalacze #(6 4 . 6 poziomu instrukcji. Wszystkie wyzwa- lacze tego samego typu będą uruchamiały się sekwencyjnie (więcej informacji na temat kolejności uruchamiania wyzwalaczy znajduje się w następnym podrozdziale). Przed wydaniem języka PL/SQL w wersji 2.1 (system Oracle7 wydanie 7.1) dla tabeli można było zdefiniować tylko jeden wyzwalacz określonego typu — maksymalnie 12. A zatem, aby można było definiować podwójne wyzwalacze tego samego typu dla okre- ślonej tabeli, parametr inicjalizacji 1/2#6+$. musi mieć wartość 7.1 lub wyższą (co jest niemal pewne). Zdarzenie wyzwalające dla wyzwalacza DML określa nazwę tabeli (oraz kolumny), dla której nastąpi uruchomienie wyzwalacza. W systemie Oracle8i oraz w wersjach wyższych wyzwalacze można także uruchamiać dla kolumny tabeli zagnieżdżonej. Więcej informacji na temat tabel zagnieżdżonych znajduje się w rozdziale 8. Kolejność uruchamiania wyzwalaczy Uruchamianie wyzwalaczy następuje podczas wykonywania instrukcji DML. Poniżej poda- no algorytm ich wykonywania: Rozdział 11.  Wyzwalacze 405 1. Wykonanie wyzwalacza $ (14 na poziomie instrukcji, o ile taki istnieje. 2. Dla każdego wiersza, na którym wykonywana jest instrukcja:  wykonanie wyzwalacza $ (14 na poziomie wiersza, o ile taki istnieje;  wykonanie samej instrukcji, o ile taka istnieje; wykonanie wyzwalacza #(6 4 na poziomie wiersza, o ile taki istnieje. 3. Wykonanie wyzwalacza #(6 4 na poziomie instrukcji, o ile taki istnieje.  Aby to zilustrować, proszę sobie wyobrazić, że utworzono wszystkie cztery rodzaje wy- zwalaczy 72 #6 dla tabeli grupy — $ (14 oraz #(6 4 — na poziomie instrukcji oraz na poziomie wiersza. Zostaną utworzone trzy wyzwalacze $ (14 poziomu wiersza oraz dwa wyzwalacze #(6 4 poziomu instrukcji: Dostępne na płycie CD w skrypcie KolejnoscUruchamiania.sql. 4 #6 5 37 0 MQNGLPAY[\YCNCE\[ 56#469+6* +0 4 / 06$; 4 #6 144 2.# 2# -#) 2CMKGV9[\YCNCE\[#5 )NQDCNP[NKE\PKMFQY[MQT\[UVCPKCYY[\YCNCE\CEJ \A.KE\PKM07/$ 4 0 2CMKGV9[\YCNCE\[ 4 #6 144 2.# 64+)) 4)TWR[$+PUVTWMELC $ (14 72 #6 10ITWR[ $ )+0 0CLRKGTYNKE\PKM\QUVCPKGY[\GTQYCP[ 2CMKGV9[\YCNCE\[\A.KE\PKM +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  $ (14 PCRQ\KQOKGKPUVTWMELKNKE\PKM ^^2CMKGV9[\RYCNCE\[\A.KE\PKM  #VGTC\\QUVCPKG\YKúMU\QPCLGIQYCTVQħèQLGFGPFNCMQRNGLPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[$+PUVTWMELC 4 #6 144 2.# 64+)) 4)TWR[#+PUVTWMELC #(6 472 #6 10ITWR[ $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  #(6 4PCRQ\KQOKGKPUVTWMELKNKE\PKM ^^2CMKGVR9[\YCNCE\[\A.KE\PKM   YKúMU\GPKGQLGFGPFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[#+PUVTWMELC 406 Część III  Dodatkowe właściwości języka PL/SQL 4 #6 144 2.# 64+)) 4)TWR[#+PUVTWMELC #(6 472 #6 10ITWR[ $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  #(6 4PCRQ\KQOKGKPUVTWMELKNKE\PKM ^^2CMKGRV9[\YCNCE\[\A.KE\PKM   YKúMU\GPKGNKE\PKMCFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[#+PUVTWMELC 4 #6 144 2.# 64+)) 4)TWR[$9KGTU\ $ (14 72 #6 10ITWR[ (14 # *419 $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM ^^2CMKGV9[\RYCNCE\[\A.KE\PKM   YKúMU\GPKGNKE\PKMCFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[$9KGTU\ 4 #6 144 2.# 64+)) 4)TWR[$9KGTU\ $ (14 72 #6 10ITWR[ (14 # *419 $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM ^^2CMKGV9[\RYCNCE\[\A.KE\PKM   YKúMU\GPKGNKE\PKMCFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[$9KGTU\ 4 #6 144 2.# 64+)) 4)TWR[$9KGTU\ $ (14 72 #6 10ITWR[ (14 # *419 $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM ^^2CMKGV9[\RYCNCE\[\A.KE\PKM   YKúMU\GPKGNKE\PKMCFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM  0 )TWR[$9KGTU\ 4 #6 144 2.# 64+)) 4)TWR[#9KGTU\ #(6 472 #6 10ITWR[ (14 # *419 $ )+0 +05 46+061VCDGNCAV[OE\ MQNAPWOMQNA\PCM 8#.7 5 MQNGLPAY[\YCNCE\[0 :68#.  #(6 4PCRQ\KQOKGYKGTU\CNKE\PKM ^^2CMKGV9[\YCNRCE\[\A.KE\PKM   YKúMU\GPKGNKE\PKMCFNCPCUVúRPGIQY[\YCNCE\C 2CMKGV9[\YCNCE\[\A.KE\PKM2CMKGV9[\YCNCE\[\A.KE\PKM R  0 )TWR[#YKGTU\ Rozdział 11.  Wyzwalacze 407 Teraz można wydać następującą instrukcję 72 #6 : Dostępne na płycie CD jako część skryptu KolejnoscUruchamiania.sql. 72 #6 ITWR[ 5 6NKE\DCA\CNKE\GP 9* 4 Y[F\KCN+0 *+5  +0(  Powyższa instrukcja dotyczy czterech wierszy. Każdy z wyzwalaczy $ (14 oraz #(6 4 po- ziomu instrukcji jest wykonywany raz oraz wyzwalacze $ (14 i #(6 4 poziomu wiersza są wykonywane po cztery razy. Jeżeli następnie będzie pobrany wiersze z tabeli VCDGNCA V[OE\, to uzyska się następujący wynik: Dostępne na płycie CD w skrypcie KolejnoscUruchamiania.sql. 53. 5 . 6 (41/VCDGNCAV[OE\ 14 4$;MQNAPWO -1.A07/-1.A 0#-  $ (14 PCRQ\KQOKGKPUVTWMELKNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM #(6 4PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM #(6 4PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM #(6 4PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM $ (14 PCRQ\KQOKGYKGTU\CNKE\PKM #(6 4PCRQ\KQOKGYKGTU\CNKE\PKM #(6 4PCRQ\KQOKGKPUVTWMELKNKE\PKM #(6 4PCRQ\KQOKGKPUVTWMELKNKE\PKM Dla każdego uruchamianego wyzwalacza są widoczne zmiany dokonane przez wcześniej- sze wyzwalacze, jak również inne zmiany w bazie danych dokonane za pomocą instrukcji. Można to zauważyć, obserwując wartość licznika wyświetlaną przez każdy z wyzwalaczy (więcej informacji na temat zastosowania zmiennych pakietowych znajduje się w roz- dziale 10.). Kolejność uruchamiania wyzwalaczy tego samego typu nie jest określona. Jak można za- uważyć w powyższym przykładzie, dla każdego z wyzwalaczy są widoczne zmiany wyko- nane przez wyzwalacz uruchomiony wcześniej. Jeżeli kole
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Oracle9i. Programowanie w języku PL/SQL
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: