SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Oracle8.
                                         Programowanie
           KATALOG KSI¥¯EK               w jêzyku PL/SQL
                      KATALOG ONLINE     Autor: Scott Urman
                                         T³umaczenie: Tomasz Pêdziwiatr, Grzegorz Stawikowski,
       ZAMÓW DRUKOWANY KATALOG           Cezary Welsyng
                                         ISBN: 83-7197-533-3
                                         Tytu³ orygina³u: Oracle8 PL/SQL Programming
              TWÓJ KOSZYK                Format: B5, stron: 762

                    DODAJ DO KOSZYKA     Wykorzystanie wbudowanego w system Oracle jêzyka PL/SQL w znacz¹cy sposób
                                         powiêksza potencja³ programisty systemów bazodanowych. PL/SQL ³¹czy w sobie du¿e
                                         mo¿liwo ci i elastyczno æ jêzyka czwartej generacji (4GL) SQL z konstrukcjami
         CENNIK I INFORMACJE             proceduralnymi jêzyka trzeciej generacji (3GL). Programy napisane w tym jêzyku
                                         umo¿liwiaj¹ obs³ugê danych zarówno w samym systemie Oracle, jak i w zewnêtrznych
                                         aplikacjach.
                   ZAMÓW INFORMACJE
                     O NOWO CIACH        Ksi¹¿ka „Oracle8. Programowanie w jêzyku PL/SQL” to wyczerpuj¹ce omówienie jêzyka
                                         PL/SQL. To doskona³a pozycja u³atwiaj¹ca naukê tego jêzyka, wietnie te¿ sprawdza
                       ZAMÓW CENNIK      siê jako podrêczne kompendium wiedzy o PL/SQL, pomocne w codziennej pracy.
                                         Liczne przyk³ady uzupe³niaj¹ informacje zawarte w ksi¹¿ce pokazuj¹c sprawdzone
                                         metody rozwi¹zywania problemów, napotykanych przez programistów.
                 CZYTELNIA               W ksi¹¿ce omówiono miêdzy innymi:
                                            • Podstawy jêzyka PL/SQL: struktura programu, zmienne, typy, wyra¿enia
          FRAGMENTY KSI¥¯EK ONLINE
                                              i operatory oraz instrukcje steruj¹ce
                                            • Korzystanie z rekordów i tabel
                                            • Korzystanie z SQL z poziomu PL/SQL, funkcje SQL dostêpne w PL/SQL
                                            • Tworzenie i u¿ywanie kursorów
                                            • Bloki w PL/SQL: podprogramy (procedury i funkcje), pakiety i wyzwalacze
                                            • Metody obs³ugi b³êdów w PL/SQL
                                            • Obiekty w PL/SQL, kolekcje
                                            • Testowanie i wykrywanie b³êdów
                                            • Zagadnienia zaawansowane: dynamiczny PL/SQL, komunikacja miêdzy sesjami,
                                              kolejkowanie, obs³uga zadañ, procedury zewnêtrzne
                                            • Optymalizacja aplikacji PL/SQL i metody zapewnienia maksymalnej wydajno ci
Wydawnictwo Helion                       Ksi¹¿ka jest przeznaczona zarówno dla do wiadczonych programistów, jak i tych,
ul. Chopina 6                            którzy jeszcze nie poznali innych jêzyków trzeciej generacji. Przydatna, choæ
44-100 Gliwice                           niekonieczna, jest ogólna znajomo æ systemu Oracle (³¹czenie siê i korzystanie z bazy
tel. (32)230-98-63                       danych, podstawy jêzyka SQL, itp.).
e-mail: helion@helion.pl
Spis treści
               Wstęp ...................................................................................................17
Rozdział 1. Wprowadzenie do PL/SQL......................................................................23
               Dlaczego język PL/SQL?..........................................................................................................23
                  Model klient-serwer............................................................................................................25
                  Normy .................................................................................................................................26
               Właściwości języka PL/SQL ....................................................................................................26
                  Struktura bloku ...................................................................................................................26
                  Zmienne i typy danych .......................................................................................................27
                  Konstrukcje pętlowe ...........................................................................................................28
               Konwencje stosowane w niniejszej ksią ce..............................................................................30
                  Wersje języka PL/SQL oraz bazy danych Oracle...............................................................30
                  Dokumentacja Oracle .........................................................................................................31
                  Kod dostępny na płycie CD................................................................................................32
               Przykładowe tabele ...................................................................................................................32
               Podsumowanie ..........................................................................................................................38
Rozdział 2. Podstawy języka PL/SQL .......................................................................39
               Blok PL/SQL.............................................................................................................................39
                  Podstawowa struktura bloku...............................................................................................42
               Jednostki leksykalne .................................................................................................................44
                  Identyfikatory .....................................................................................................................44
                  Ograniczniki .......................................................................................................................46
                  Literały................................................................................................................................48
                  Komentarze.........................................................................................................................49
               Deklaracje zmiennych...............................................................................................................51
                  Składnia deklaracji..............................................................................................................51
                  Inicjowanie zmiennych.......................................................................................................52
               Typy danych w języku PL/SQL................................................................................................53
                  Typy skalarne......................................................................................................................53
                  Typy zło one ......................................................................................................................60
                  Typy odwołania ..................................................................................................................60
                  Typy LOB...........................................................................................................................60
                  Wykorzystanie atrybutu %Type .........................................................................................61
                  Podtypy definiowane przez u ytkownika...........................................................................62
                  Konwersja pomiędzy typami danych..................................................................................62
                  Zakres i widoczność zmiennej............................................................................................64
               Wyra enia i operatory...............................................................................................................65
                  Przypisanie..........................................................................................................................66
                  Wyra enia ...........................................................................................................................67
6           Oracle8. Programowanie w języku PL/SQL


                Struktury sterowania PL/SQL...................................................................................................69
                    Instrukcja IF-THEN-ELSE.................................................................................................70
                    Pętle ....................................................................................................................................73
                    Instrukcje GOTO oraz etykiety ..........................................................................................77
                    Dyrektywy pragma .............................................................................................................80
                Styl programowania w języku PL/SQL ....................................................................................80
                    Wprowadzanie komentarzy ................................................................................................81
                    Nazywanie zmiennych........................................................................................................82
                    Stosowanie du ych liter......................................................................................................82
                    Odstępy w kodzie programu...............................................................................................82
                    Ogólne uwagi dotyczące stylu programowania..................................................................83
                Podsumowanie ..........................................................................................................................83
Rozdział 3. Rekordy i tabele ....................................................................................85
                Rekordy w języku PL/SQL .......................................................................................................85
                   Przypisanie rekordu ............................................................................................................86
                   Stosowanie operatora %ROWTYPE ..................................................................................88
                Tabele........................................................................................................................................88
                   Tabele a tablice ...................................................................................................................89
                   Atrybuty tabeli ....................................................................................................................91
                   Wytyczne stosowania tabel PL/SQL ..................................................................................94
                Podsumowanie ..........................................................................................................................95
Rozdział 4. SQL w PL/SQL.......................................................................................97
                Instrukcje SQL ..........................................................................................................................97
                    Wykorzystanie instrukcji SQL w języku PL/SQL..............................................................98
                Stosowanie instrukcji DML w języku PL/SQL ........................................................................99
                    Instrukcja SELECT...........................................................................................................101
                    Instrukcja INSERT ...........................................................................................................102
                    Instrukcja UPDATE..........................................................................................................104
                    Instrukcja DELETE ..........................................................................................................104
                    Klauzula WHERE.............................................................................................................105
                    Odwołania do tabel ...........................................................................................................108
                    Powiązania bazy danych...................................................................................................109
                    Synonimy..........................................................................................................................110
                Pseudokolumny.......................................................................................................................110
                    Pseudokolumny CURRVAL oraz NEXTVAL.................................................................110
                    Pseudokolumna LEVEL ...................................................................................................111
                    Pseudokolumna ROWID ..................................................................................................111
                    Pseudokolumna ROWNUM .............................................................................................112
                Instrukcje GRANT i REVOKE. Uprawnienia........................................................................112
                    Uprawnienia obiektowe a uprawnienia systemowe..........................................................113
                    Instrukcje GRANT oraz REVOKE ..................................................................................113
                    Role...................................................................................................................................115
                Sterowanie transakcjami .........................................................................................................116
                    Instrukcja COMMIT a instrukcja ROLLBACK...............................................................116
                    Punkty zachowania ...........................................................................................................118
                    Transakcje a bloki.............................................................................................................119
                Podsumowanie ........................................................................................................................120
Rozdział 5. Wbudowane funkcje SQL......................................................................121
                Wstęp ......................................................................................................................................121
                Funkcje znakowe zwracające wartości znakowe ....................................................................122
                   CHR ..................................................................................................................................122
                   CONCAT..........................................................................................................................122
Spis treści                      7


   INITCAP...........................................................................................................................123
   LOWER ............................................................................................................................123
   LPAD................................................................................................................................124
   LTRIM..............................................................................................................................125
   NLS_INITCAP .................................................................................................................125
   NLS_LOWER...................................................................................................................126
   NLS_UPPER ....................................................................................................................126
   REPLACE.........................................................................................................................127
   RPAD................................................................................................................................128
   RTRIM..............................................................................................................................128
   SOUNDEX .......................................................................................................................129
   SUBSTR ...........................................................................................................................130
   SUBSTRB.........................................................................................................................131
   TRANSLATE ...................................................................................................................131
   UPPER..............................................................................................................................132
Funkcje znakowe zwracające wartości liczbowe....................................................................133
   ASCII................................................................................................................................133
   INSTR...............................................................................................................................133
   INSTRB ............................................................................................................................134
   LENGTH ..........................................................................................................................135
   LENGTHB........................................................................................................................135
   NLSSORT.........................................................................................................................136
Funkcje numeryczne ...............................................................................................................136
   ABS...................................................................................................................................136
   ACOS................................................................................................................................137
   ASIN .................................................................................................................................137
   ATAN ...............................................................................................................................138
   ATAN2 .............................................................................................................................138
   CEIL .................................................................................................................................139
   COS...................................................................................................................................139
   COSH................................................................................................................................140
   EXP...................................................................................................................................140
   FLOOR .............................................................................................................................140
   LN .....................................................................................................................................141
   LOG ..................................................................................................................................141
   MOD .................................................................................................................................142
   POWER ............................................................................................................................142
   ROUND ............................................................................................................................143
   SIGN .................................................................................................................................143
   SIN....................................................................................................................................144
   SINH .................................................................................................................................144
   SQRT ................................................................................................................................144
   TAN ..................................................................................................................................145
   TANH ...............................................................................................................................145
   TRUNC.............................................................................................................................146
Funkcje związane z datą .........................................................................................................146
   ADD_MONTHS...............................................................................................................146
   LAST_DAY......................................................................................................................147
   MONTHS_BETWEEN ....................................................................................................147
   NEW_TIME .....................................................................................................................148
   NEXT_DAY .....................................................................................................................149
   ROUND ............................................................................................................................149
   SYSDATE ........................................................................................................................150
   TRUNC.............................................................................................................................151
8           Oracle8. Programowanie w języku PL/SQL


                Funkcje dokonujące konwersji................................................................................................152
                    CHARTOROWID ............................................................................................................152
                    CONVERT .......................................................................................................................153
                    HEXTORAW ...................................................................................................................153
                    RAWTOHEX ...................................................................................................................154
                    ROWIDTOCHAR ............................................................................................................154
                    TO_CHAR(daty) ..............................................................................................................155
                    TO_CHAR(etykiety) ........................................................................................................155
                    TO_CHAR(liczba)............................................................................................................157
                    TO_DATE ........................................................................................................................159
                    TO_LABEL ......................................................................................................................159
                    TO_MULTI_BYTE..........................................................................................................160
                    TO_NUMBER..................................................................................................................160
                    TO_SINGLE_BYTE ........................................................................................................161
                Funkcje grupowe.....................................................................................................................161
                    AVG..................................................................................................................................161
                    COUNT.............................................................................................................................162
                    GLB ..................................................................................................................................163
                    LUB ..................................................................................................................................163
                    MAX .................................................................................................................................163
                    MIN...................................................................................................................................164
                    STDDEV...........................................................................................................................164
                    SUM..................................................................................................................................165
                    VARIANCE......................................................................................................................165
                Inne funkcje.............................................................................................................................166
                    BFILENAME ...................................................................................................................166
                    DECODE ..........................................................................................................................166
                    DUMP...............................................................................................................................167
                    EMPTY_CLOB/EMPTY_BLOB.....................................................................................169
                    GREATEST......................................................................................................................169
                    GREATEST_LB...............................................................................................................170
                    LEAST..............................................................................................................................170
                    LEAST_UB ......................................................................................................................170
                    NVL ..................................................................................................................................171
                    UID ...................................................................................................................................171
                    USER ................................................................................................................................172
                    USERENV........................................................................................................................172
                    VSIZE ...............................................................................................................................173
                PL/SQL w działaniu. Drukowanie liczb w postaci tekstowej.................................................174
                Podsumowanie ........................................................................................................................180
Rozdział 6. Kursory ...............................................................................................181
                Czym jest kursor?....................................................................................................................181
                    Przetwarzanie kursorów jawnych .....................................................................................182
                    Przetwarzanie kursorów niejawnych ................................................................................189
                Pętle pobierania danych kursora .............................................................................................191
                    Pętle proste........................................................................................................................191
                    Pętle WHILE ....................................................................................................................193
                    Pętle FOR kursora.............................................................................................................194
                    Wyjątek NO_DATA_FOUND kontra atrybut %NOTFOUND .......................................195
                    Kursory z klauzulą FOR UPDATE instrukcji SELECT...................................................196
                Zmienne kursora .....................................................................................................................199
                    Deklaracja zmiennej kursora ............................................................................................200
                    Przydzielenie obszaru pamięci dla zmiennych kursora ....................................................201
                    Otwieranie zmiennej kursora dla zapytania......................................................................202
Spis treści                      9


                   Zamykanie zmiennych kursora.........................................................................................203
                   Pierwszy przykład zmiennej kursora ................................................................................203
                   Drugi przykład zmiennej kursora .....................................................................................205
                   Ograniczenia u ycia zmiennych kursora ..........................................................................206
                Podsumowanie ........................................................................................................................207
Rozdział 7. Podprogramy: procedury i funkcje ........................................................209
                Tworzenie procedur i funkcji..................................................................................................209
                    Tworzenie procedury ........................................................................................................210
                    Tworzenie funkcji.............................................................................................................221
                    Wyjątki wywoływane wewnątrz podprogramów .............................................................224
                    Usuwanie procedur i funkcji.............................................................................................226
                Poło enie podprogramów .......................................................................................................226
                    Składowane podprogramy oraz słownik danych ..............................................................226
                    Podprogramy lokalne........................................................................................................228
                Zale ności dotyczące podprogramów.....................................................................................231
                    Określanie zale ności .......................................................................................................233
                Uprawnienia i podprogramy składowane ...............................................................................236
                    Uprawnienie EXECUTE ..................................................................................................236
                    Składowane podprogramy i role.......................................................................................237
                Podsumowanie ........................................................................................................................239
Rozdział 8. Pakiety ...............................................................................................241
                Pakiety.....................................................................................................................................241
                    Specyfikacja pakietu.........................................................................................................241
                    Ciało pakietu.....................................................................................................................243
                    Pakiety i zakres .................................................................................................................245
                    Przecią enie podprogramów pakietowych .......................................................................246
                    Inicjalizacja pakietu ..........................................................................................................247
                    Pakiety i zale ności...........................................................................................................249
                Stosowanie składowanych funkcji w instrukcjach SQL .........................................................251
                    Poziomy czystości ............................................................................................................252
                    Parametry domyślne .........................................................................................................256
                PL/SQL w działaniu — Eksporter schematów PL/SQL.........................................................256
                Podsumowanie ........................................................................................................................264
Rozdział 9. Wyzwalacze.........................................................................................265
                Tworzenie wyzwalaczy...........................................................................................................265
                   Komponenty wyzwalacza.................................................................................................267
                   Wyzwalacze i słownik danych..........................................................................................270
                   Kolejność uruchamiania wyzwalaczy...............................................................................272
                   Stosowanie wartości :old oraz :new w wyzwalaczach na poziomie wiersza ...................273
                   Korzystanie z predykatów wyzwalacza: INSERTING, UPDATING oraz DELETING.....276
                Tabele mutujące ......................................................................................................................278
                   Przykład tabeli mutującej .................................................................................................280
                   Rozwiązanie problemu błędu tabeli mutującej.................................................................281
                PL/SQL w działaniu — wdra anie techniki kaskadowego uaktualniania ..............................283
                   Program narzędziowy kaskadowego uaktualniania..........................................................285
                   Działanie pakietu kaskadowego uaktualniania.................................................................288
                Podsumowanie ........................................................................................................................292
Rozdział 10. Obsługa błędów ...................................................................................293
                Zdefiniowanie wyjątku ...........................................................................................................293
                   Deklarowanie wyjątków ...................................................................................................295
                   Wywoływanie wyjątków ..................................................................................................298
                   Obsługa wyjątków ............................................................................................................299
10          Oracle8. Programowanie w języku PL/SQL


                    Dyrektywa pragma EXCEPTION_INIT ..........................................................................305
                    Stosowanie funkcji RAISE_APPLICATION_ERROR ...................................................305
                 Propagacja wyjątków ..............................................................................................................308
                    Wyjątki wywołane w sekcji wykonania ...........................................................................308
                    Wyjątki wywołane w sekcji deklaracji .............................................................................310
                    Wyjątki wywołane w sekcji wyjątków .............................................................................312
                 Wytyczne wyjątków................................................................................................................314
                    Zakres wyjątków...............................................................................................................314
                    Unikanie nieobsługiwanych wyjątków.............................................................................315
                    Maskowanie lokalizacji błędu ..........................................................................................315
                 PL/SQL w działaniu — ogólny program obsługi błędów.......................................................316
                 Podsumowanie ........................................................................................................................324
Rozdział 11. Obiekty ...............................................................................................325
                 Wprowadzenie ........................................................................................................................325
                    Podstawy programowania obiektowego ...........................................................................325
                    Obiektowo-relacyjne bazy danych ...................................................................................327
                 Typy obiektów ........................................................................................................................328
                    Definiowanie typów obiektowych....................................................................................328
                    Deklarowanie i inicjalizacja obiektów..............................................................................330
                    Metody..............................................................................................................................332
                    Zmiana i usuwanie typów.................................................................................................338
                    Zale ności między obiektami ...........................................................................................340
                 Obiekty w bazie danych..........................................................................................................340
                    Poło enie obiektów...........................................................................................................341
                    Obiekty w instrukcjach DML ...........................................................................................344
                    Metody MAP i ORDER....................................................................................................349
                 Podsumowanie ........................................................................................................................351
Rozdział 12. Kolekcje..............................................................................................353
                 Tabele zagnie d one ...............................................................................................................353
                    Deklarowanie tabeli zagnie d onej ..................................................................................353
                    Zagnie d one tabele w bazie danych ...............................................................................356
                    Tabele zagnie d one a tabele indeksowe .........................................................................361
                 Tablice o zmiennym rozmiarze...............................................................................................361
                    Deklarowanie tablicy o zmiennym rozmiarze ..................................................................362
                    Tablice o zmiennym rozmiarze w bazie danych...............................................................363
                    Tablice o zmiennym rozmiarze a tabele zagnie d one ....................................................365
                 Metody dla kolekcji ................................................................................................................366
                    EXISTS.............................................................................................................................366
                    COUNT.............................................................................................................................367
                    LIMIT ...............................................................................................................................368
                    FIRST i LAST ..................................................................................................................368
                    NEXT i PRIOR.................................................................................................................369
                    EXTEND ..........................................................................................................................369
                    TRIM ................................................................................................................................371
                    DELETE ...........................................................................................................................373
                 Podsumowanie ........................................................................................................................374
Rozdział 13. Środowiska wykonawcze PL/SQL .........................................................375
                 Ró ne mechanizmy języka PL/SQL .......................................................................................375
                    Implikacje umieszczenia mechanizmu PL/SQL po stronie klienta ..................................377
                 Mechanizm PL/SQL po stronie serwera .................................................................................378
                    Program SQL*Plus ...........................................................................................................378
                    Prekompilatory Oracle......................................................................................................383
Spis treści                    11


                  OCI ...................................................................................................................................389
                  Program SQL-Station .......................................................................................................392
               Mechanizm PL/SQL po stronie klienta...................................................................................396
                  Przyczyny wykorzystywania mechanizmu PL/SQL po stronie klienta............................396
                  Program Oracle Forms......................................................................................................397
                  Program Procedure Builder ..............................................................................................399
               Wrapper PL/SQL ....................................................................................................................401
                  Wykonanie wrappera ........................................................................................................401
                  Pliki wejścia i wyjścia ......................................................................................................402
                  Sprawdzanie syntaktyki i semantyki ................................................................................402
                  Wytyczne dla programu wrapper......................................................................................403
               Podsumowanie ........................................................................................................................403
Rozdział 14. Testowanie i wykrywanie błędów..........................................................405
               Diagnostyka problemu ............................................................................................................405
                  Wytyczne wykrywania i usuwania błędów ......................................................................405
                  Pakiet Debug słu ący do wykrywania i usuwania błędów...............................................407
               Wstawianie do tabeli testowania.............................................................................................407
                  Problem 1..........................................................................................................................407
               Pakiet DBMS_OUTPUT ........................................................................................................415
                  Składniki pakietu DBMS_OUTPUT ................................................................................416
                  Problem 2..........................................................................................................................420
               Programy PL/SQL słu ące do wykrywania i usuwania błędów .............................................426
               Program Procedure Builder.....................................................................................................426
                  Problem 3..........................................................................................................................426
               Program SQL-Station..............................................................................................................432
                  Problem 4..........................................................................................................................433
               Porównanie programów Procedure Builder i SQL-Station.....................................................437
               Metodyka programowania ......................................................................................................438
                  Programowanie modularne...............................................................................................438
                  Projektowanie zstępujące..................................................................................................439
                  Abstrakcja danych ............................................................................................................440
               Podsumowanie ........................................................................................................................440
Rozdział 15. Dynamiczny PL/SQL ............................................................................441
               Wprowadzenie ........................................................................................................................441
                 Instrukcje SQL statyczne a instrukcje dynamiczne ..........................................................441
                 Ogólny opis pakietu DBMS_SQL ....................................................................................442
               Wykonywanie instrukcji DML oraz DDL nie będących zapytaniami....................................446
                 Otwieranie kursora............................................................................................................447
                 Parsowanie instrukcji........................................................................................................447
                 Wiązanie ka dej zmiennej wejściowej .............................................................................448
                 Wykonanie instrukcji........................................................................................................450
                 Zamykanie kursora ...........................................................................................................450
                 Przykład ............................................................................................................................451
                 Wykonywanie instrukcji DDL..........................................................................................452
                 Wykonywanie zapytań......................................................................................................453
                 Parsowanie instrukcji........................................................................................................454
                 Zdefiniowanie zmiennych wyjściowych ..........................................................................454
                 Pobieranie wierszy............................................................................................................456
                 Zwracanie wyników do zmiennych PL/SQL....................................................................456
                 Przykład ............................................................................................................................458
               Wykonywanie bloku PL/SQL.................................................................................................461
                 Parsowanie instrukcji........................................................................................................461
                 Pobranie wartości ka dej zmiennej wyjściowej ...............................................................462
12         Oracle8. Programowanie w języku PL/SQL


                  Przykład ............................................................................................................................463
                  Zastosowanie parametru out_value_size ..........................................................................465
               PL/SQL w działaniu — wykonywanie dowolnych procedur składowanych .........................466
               Udoskonalenia pakietu DBMS_SQL w wydaniu PL/SQL 8.0 ...............................................472
                  Parsowanie du ych ciągów znaków instrukcji SQL.........................................................473
                  Przetwarzanie tablicowe za pomocą pakietu DBMS_SQL ..............................................474
                  Opisywanie listy instrukcji SELECT................................................................................478
               Ró ne procedury .....................................................................................................................481
                  Pobieranie danych typu LONG ........................................................................................481
                  Dodatkowe funkcje obsługi błędów .................................................................................482
               PL/SQL w działaniu — zapisywanie wartości typu LONG do pliku .....................................484
               Uprawnienia a pakiet DBMS_SQL.........................................................................................486
                  Uprawnienia wymagane dla pakietu DBMS_SQL...........................................................486
                  Role a pakiet DBMS_SQL ...............................................................................................487
               Porównanie pakietu DBMS_SQL z innymi metodami przetwarzania dynamicznego ...........487
                  Opisywanie listy instrukcji SELECT................................................................................488
                  Przetwarzanie tablicowe ...................................................................................................488
                  Operacje dzielenia na części danych typu LONG ............................................................488
                  Ró nice interfejsów ..........................................................................................................489
               Wskazówki i techniki..............................................................................................................489
                  Ponowne zastosowanie kursorów .....................................................................................489
                  Zezwolenia........................................................................................................................489
                  Zawieszenia programu związane z operacjami DDL .......................................................490
               Podsumowanie ........................................................................................................................490
Rozdział 16. Komunikacja między sesjami................................................................491
               Pakiet DBMS_PIPE ................................................................................................................491
                  Wysyłanie komunikatu .....................................................................................................495
                  Odbieranie komunikatu ....................................................................................................496
                  Tworzenie potoków i zarządzanie nimi............................................................................498
                  Uprawnienia i bezpieczeństwo .........................................................................................500
                  Ustanawianie protokołu komunikacji ...............................................................................501
                  Przykład ............................................................................................................................503
               Pakiet DBMS_ALERT ...........................................................................................................509
                  Wysyłanie ostrze enia ......................................................................................................509
                  Odbieranie ostrze enia......................................................................................................509
                  Inne procedury ..................................................................................................................511
                  Ostrze enia i słownik danych ...........................................................................................512
               Porównanie pakietów DBMS_PIPE i DBMS_ALERT ..........................................................514
               Podsumowanie ........................................................................................................................515
Rozdział 17. Zaawansowane kolejkowanie w Oracle.................................................517
               Wprowadzenie ........................................................................................................................517
                  Elementy systemu zaawansowanego kolejkowania .........................................................518
                  Realizacja zaawansowanego kolejkowania ......................................................................520
               Operacje na kolejkach.............................................................................................................520
                  Typy pomocnicze..............................................................................................................521
                  Operacja ENQUEUE ........................................................................................................525
                  Operacja DEQUEUE ........................................................................................................526
               Administrowanie kolejką ........................................................................................................526
                  Podprogramy pakietu DBMS_AQADM ..........................................................................526
                  Uprawnienia do kolejek....................................................................................................533
                  Kolejki i słownik danych ..................................................................................................533
               Przykłady ................................................................................................................................536
                  Tworzenie kolejek i tabel kolejek.....................................................................................536
                  Proste wstawianie i odbieranie komunikatów ..................................................................538
Spis treści                   13


                  „Czyszczenie” kolejek ......................................................................................................539
                  Wstawianie i odbieranie komunikatów z uwzględnieniem priorytetów...........................540
                  Wstawianie i odbieranie komunikatów z wykorzystaniem identyfikatora
                      korelacji lub identyfikatora komunikatu ....................................................................542
                  Przeglądanie kolejek.........................................................................................................544
                  Stosowanie kolejek wyjątków ..........................................................................................546
                  Usuwanie kolejek..............................................................................................................548
               Podsumowanie ........................................................................................................................549
Rozdział 18. Obsługa zadań i plików w bazie danych ................................................551
               Zadania w bazie danych..........................................................................................................551
                  Procesy drugoplanowe......................................................................................................551
                  Uruchamianie zadania ......................................................................................................552
                  Zadania niewykonane .......................................................................................................556
                  Usuwanie zadania .............................................................................................................557
                  Dokonywanie zmian w zadaniu........................................................................................557
                  Przeglądanie zadań w słowniku danych ...........................................................................558
                  Warunki wykonywania zadań...........................................................................................558
               Obsługa plików .......................................................................................................................558
                  Zabezpieczenia .................................................................................................................559
                  Wyjątki w pakiecie UTL_FILE ........................................................................................560
                  Otwieranie i zamykanie plików ........................................................................................561
                  Zapis do pliku ...................................................................................................................563
                  Odczyt z pliku...................................................................................................................566
                  Przykłady ..........................................................................................................................566
               Podsumowanie ........................................................................................................................573
Rozdział 19. Serwer WWW Oracle............................................................................575
               Środowisko serwera WWW Oracle ........................................................................................575
                  Agent PL/SQL ..................................................................................................................577
                  Określanie wartości parametrów w procedurach..............................................................578
               Narzędzia WWW w PL/SQL..................................................................................................580
                  Pakiety HTP i HTF ...........................................................................................................580
                  Pakiet OWA_UTIL...........................................................................................................594
                  Pakiet OWA_IMAGE.......................................................................................................601
                  Pakiet OWA_COOKIE.....................................................................................................604
               Tworzenie procedur OWA......................................................................................................607
                  Procedura OWA_UTIL.SHOWPAGE .............................................................................607
                  SQL-Station ......................................................................................................................608
               Podsumowanie ........................................................................................................................608
Rozdział 20. Procedury zewnętrzne ..........................................................................609
               Czym jest procedura zewnętrzna?...........................................................................................609
                   Wywoływanie procedury zewnętrznej .............................................................................610
                   Odwzorowywanie parametrów.........................................................................................617
                   Funkcje i procedury zewnętrzne w pakietach...................................................................624
               Połączenie zwrotne z bazą danych..........................................................................................626
                   Podprogramy usługowe ....................................................................................................626
                   Wykonywanie instrukcji SQL w procedurze zewnętrznej ...............................................629
               Wskazówki, wytyczne i ograniczenia.....................................................................................630
                   Wykrywanie błędów w procedurach zewnętrznych .........................................................630
                   Wytyczne ..........................................................................................................................632
                   Ograniczenia .....................................................................................................................633
               Podsumowanie ........................................................................................................................634
14          Oracle8. Programowanie w języku PL/SQL


Rozdział 21. Duże obiekty .......................................................................................635
                Czym są du e obiekty? ...........................................................................................................635
                   Składowanie du ych obiektów .........................................................................................636
                   Du e obiekty w instrukcjach DML...................................................................................637
                Obiekty typu BFILE................................................................................................................639
                   Katalogi.............................................................................................................................639
                   Otwieranie i zamykanie plików BFILE............................................................................641
                   Pliki BFILE w instrukcjach DML ....................................................................................641
                Pakiet DBMS_LOB ................................................................................................................643
                   Podprogramy pakietu DBMS_LOB .................................................................................643
                   Wyjątki zgłaszane przez podprogramy z pakietu DBMS_LOB.......................................658
                   Porównanie interfejsów DBMS_LOB i OCI....................................................................658
                PL/SQL w działaniu: Kopiowanie danych typu LONG do postaci LOB ...............................659
                Podsumowanie ........................................................................................................................661
Rozdział 22. Wydajność i strojenie ..........................................................................663
                Obszar wspólny.......................................................................................................................663
                    Struktura instancji bazy Oracle.........................................................................................663
                    Jak funkcjonuje obszar wspólny? .....................................................................................667
                    Rozmiar obszaru wspólnego.............................................................................................669
                    Unieruchamianie obiektów...............................................................................................670
                Strojenie instrukcji SQL..........................................................................................................672
                    Generowanie planu wykonania.........................................................................................672
                    Wykorzystywanie planu ...................................................................................................678
                Sieć..........................................................................................................................................679
                    Wykorzystywanie środowiska PL/SQL po stronie klienta...............................................679
                    Unikanie powtórnej analizy składni .................................................................................679
                    Przetwarzanie tablicowe ...................................................................................................680
                Podsumowanie ........................................................................................................................680
Dodatek A Słowa zastrzeżone w PL/SQL ...............................................................681
Dodatek B Pakiety dostępne w PL/SQL ................................................................683
                Tworzenie pakietów................................................................................................................683
                Opis pakietów .........................................................................................................................683
                   DBMS_ALERT ................................................................................................................683
                   DBMS_APPLICATION_INFO .......................................................................................684
                   DBMS_AQ i DBMS_AQADM........................................................................................686
                   DBMS_DEFER, DBMS_DEFER_SYS i DBMS_DEFER_QUERY ..............................686
                   DBMS_DDL.....................................................................................................................686
                   DBMS_DESCRIBE..........................................................................................................687
                   DBMS_JOB......................................................................................................................688
                   DBMS_LOB .....................................................................................................................688
                   DBMS_LOCK ..................................................................................................................688
                   DBMS_OUTPUT .............................................................................................................693
                   DBMS_PIPE.....................................................................................................................693
                   DBMS_REFRESH i DBMS_SNAPSHOT ......................................................................693
                   DBMS_REPCAT, DBMS_REPCAT_AUTH i DBMS_REPCAT_ADMIN ..................693
                   DBMS_ROWID ...............................................................................................................693
                   DBMS_SESSION.............................................................................................................694
                   DBMS_SHARED_POOL.................................................................................................695
                   DBMS_SQL .....................................................................................................................696
                   DBMS_TRANSACTION.................................................................................................696
                   DBMS_UTILITY .............................................................................................................698
                   UTL_FILE ........................................................................................................................700
Spis treści                    15


Dodatek C Słownik wybranych elementów PL/SQL ................................................701
Dodatek D Słownik danych ...................................................................................721
               Czym jest słownik danych?.....................................................................................................721
                   Standardy nazewnictwa ....................................................................................................721
                   Uprawnienia......................................................................................................................722
               Perspektywy DBA, All i User w słowniku danych.................................................................722
                   Zale ności .........................................................................................................................723
                   Kolekcje............................................................................................................................724
                   Błędy kompilacji...............................................................................................................724
                   Katalogi.............................................................................................................................725
                   Zadania .............................................................................................................................725
                   Biblioteki ..........................................................................................................................726
                   Du e obiekty (LOB) .........................................................................................................726
                   Metody obiektów ..............................................................................................................727
                   Parametry metod obiektów ...............................................................................................727
                   Wartości zwracane przez metody obiektów .....................................................................728
                   Typy obiektowe ................................................................................................................729
                   Odwołania do obiektów....................................................................................................729
                   Atrybuty typów obiektowych ...........................................................................................729
                   Obiekty w schemacie........................................................................................................730
                   Kod źródłowy ...................................................................................................................730
                   Tabele ...............................................................................................................................731
                   Kolumny tabeli .................................................................................................................732
                   Wyzwalacze......................................................................................................................733
                   Kolumny wyzwalaczy ......................................................................................................734
                   Perspektywy......................................................................................................................734
               Inne perspektywy słownika danych ........................................................................................735
                   dbms_alert_info ................................................................................................................735
                   dict_columns.....................................................................................................................735
               Skorowidz ...........................................................................................737
Rozdział 4.
SQL w PL/SQL
              Strukturalny język zapytań (SQL) określa sposób manipulowania danymi w bazie danych
              Oracle. Konstrukcje proceduralne, które przedstawiono w rozdziale 2. i 3., stają się znacznie
              bardziej u yteczne w połączeniu z mocą przetwarzania języka SQL, poniewa wtedy
              konstrukcje te pozwalają programom PL/SQL na manipulowanie danymi w bazie danych
              Oracle. W niniejszym rozdziale zostaną omówione instrukcje SQL, które są dozwolone
              w języku PL/SQL i instrukcje sterowania transakcjami, które gwarantują utrzymanie
              spójności danych. W rozdziale 5. Czytelnik zapozna się z wbudowanymi funkcjami SQL.



Instrukcje SQL
              Instrukcje SQL mo na podzielić na sześć kategorii, które wymieniono poni ej. W tabeli
              4.1 znajduje się kilka przykładowych instrukcji. Szczegółowy opis wszystkich instrukcji
              SQL znajduje się w publikacji Server SQL Reference.

Tabela 4.1. Kategorie instrukcji SQL
    Kategoria                                         Przykładowe instrukcje SQL
    Instrukcje języka manipulowania danymi DML        5'.'%6, +05'46, 72&#6', &'.'6', 5'6 64#05#%6+10,
    (Data Manipulation Language)                      ':2.#+0 2.#0
    Instrukcje języka definicji danych DDL            &412, %4'#6', #.6'4, )4#06, 4'81-'
    (Data Definition Language)
    Instrukcje sterowania transakcją                  %1//+6, 41..$#%-, 5#8'21+06
    Instrukcje sterowania sesji                       #.6'4 5'55+10, 5'6 41.'
    Instrukcje sterowania systemu                     #.6'4 5;56'/
    Wbudowane polecenia SQL                           %100'%6, &'%.#4' %74514, #..1%#6'1

                   instrukcje języka manipulowania danymi DML (Data Manipulation Language)
                   słu ą do zmieniania danych w tabelach lub danych zapytań w tabeli bazy danych,
                   ale nie umo liwiają zmiany struktury tabeli lub innych obiektów;




1
    Wbudowane polecenie SQL #..1%#6' jest dostępne w wydaniu Oracle 7.2 i wy szym.
98   Oracle8. Programowanie w języku PL/SQL


         instrukcje języka definicji danych DDL (Data Definition Language) słu ą
         do tworzenia, usuwania lub zmieniania struktury obiektu schematu. Polecenia,
         które zmieniają uprawnienia do obiektów schematu, są równie instrukcjami DDL;
         instrukcje sterowania transakcji gwarantują zachowanie spójności danych dzięki
         zorganizowaniu instrukcji SQL w logiczne transakcje, których wykonywanie
         jako jednostki kończy się powodzeniem lub niepowodzeniem;
         instrukcje sterowania sesji słu ą do zmieniania ustawień dla pojedynczego
         połączenia z bazą danych, np. do aktywacji śledzenia sesji SQL;
         instrukcje sterowania systemu słu ą do zmieniania ustawień dla całej bazy danych,
         np. do aktywowania lub dezaktywowania procesu archiwizacji;
         wbudowane polecenia SQL są wykorzystywane w programach prekompilatora
         Oracle.

Wykorzystanie instrukcji SQL w języku PL/SQL
     Jedynymi instrukcjami SQL, które są dozwolone w programie PL/SQL, są instrukcje DML
     oraz instrukcje sterowania transakcji. W szczególności instrukcje DDL są niedozwolone.
     Tak e instrukcja ':2.#+0 2.#0, mimo e jest klasyfikowana jako instrukcja DML, jest
     niedozwolona. Aby to wyjaśnić, konieczna jest znajomość zało eń projektowych przy-
     jętych dla języka PL/SQL.

     Ogólnie język programowania mo e wiązać zmienne na dwa sposoby: przez wiązanie
     wczesne lub wiązanie późne. Wiązanie zmiennej jest procesem identyfikowania lokacji
     pamięci skojarzonej z identyfikatorem programu. W języku PL/SQL wiązanie uwzględ-
     nia równie sprawdzenie istnienia zezwolenia na uzyskanie dostępu do odwoływanego
     obiektu schematu w bazie danych. W przypadku języka, w którym stosuje się wiązanie
     wczesne, wiązanie zmiennej następuje podczas etapu kompilacji, natomiast w przypad-
     ku języka, w którym stosuje się wiązanie późne, proces wiązania zmiennej jest odkładany a
     do czasu uruchomienia programu. Uwzględnienie procesu wiązania wczesnego oznacza, e
     etap kompilacji będzie trwać dłu ej (poniewa musi być wykonane wiązanie zmiennych),
     ale sam program będzie wykonywany szybciej, poniewa wiązanie będzie ju zakończone.
     Wiązanie późne skraca czas kompilacji, ale wydłu a czas wykonywania programu.

     Język PL/SQL celowo zaprojektowano w taki sposób, aby zastosować wiązanie wczesne.
     Decyzję tę podjęto w celu zapewnienia jak najszybszego wykonywania bloku, poniewa
     wszystkie obiekty bazy danych są sprawdzane przez kompilator. Jest to sensowne rozwią-
     zanie, poniewa bloki PL/SQL mogą być składowane w bazie danych za pomocą procedur,
     funkcji, pakietów i wyzwalaczy. Obiekty te są składowane w skompilowanej formie,
     a zatem w razie potrzeby mogą być bezpośrednio ładowane z bazy danych do pamięci
     i uruchamiane. Więcej informacji na temat obiektów składowanych znajduje się w roz-
     działach 7., 8. oraz 9. Konsekwencją podjęcia takiej decyzji projektowej jest zakaz stoso-
     wania instrukcji DDL. Instrukcje DDL modyfikują obiekt bazy danych, w więc zachodzi
     konieczność ponownego sprawdzania zezwoleń. Sprawdzanie zezwoleń wymagałoby po-
     nownego wiązania identyfikatorów, a ten proces jest przeprowadzany podczas kompilacji.

     W tym punkcie warto rozwa yć następujący, hipotetyczny blok PL/SQL:
Rozdział 4.   SQL w PL/SQL            99


        &'%.#4'
          %4'#6' 6#$.' VGORAVCDNG 

            PWOAXCNWG 07/$'4
            EJCTAXCNWG %*#4

          +05'46 +061 VGORAVCDNG 
PWOAXCNWG EJCTAXCNWG
            8#.7'5 
 *GNNQ 
        '0

       W celu kompilacji tego bloku identyfikator VGORAVCDNG wymaga dowiązania. Podczas tego
       procesu następuje sprawdzenie faktu istnienia tabeli. Jednak tabela nie mo e istnieć przed
       uruchomieniem bloku. Z powy szego wynika, e omawiany blok nie mo e zostać skom-
       pilowany, a zatem nie ma sposobu na uruchomienie go.

       Instrukcje sterowania transakcji są jedynymi instrukcjami SQL, które nie mają mo liwości
       modyfikowania obiektów schematu lub uprawnień do obiektów schematu i w ten sposób
       są jedynymi poprawnymi instrukcjami SQL, stosowanymi w języku PL/SQL.

Stosowanie instrukcji DDL
              Istnieje alternatywne rozwiązanie problemu przedstawionego w poprzednim pod-
              rozdziale. Od wydania PL/SQL 2.1 jest dostępny wbudowany pakiet $/5A53..
       Jest to pakiet, który umo liwia dynamiczne tworzenie instrukcji SQL podczas 1 tworzona
       a do czasu uruchomienia programu, a więc kompilator PL/SQL nie musi wiązać identyfi-
       katorów w instrukcji, co pozwala na kompilowanie bloku. Pakiet $/5A53. jest szczegółowo
       opisany w rozdziale 15. Przykładowo, do wykonania instrukcji %4'#6' 6#$.' z poprzed-
       niego bloku mo na u yć pakietu $/5A53.. Jednak nawet wtedy kompilacja instrukcji
       +05'46 nie powiedzie się, poniewa tabela nie istnieje ć przed uruchomieniem bloku.
       Rozwiązaniem tego problemu jest zastosowanie pakietu $/5A53. równie do wykony-
       wania instrukcji +05'46.



Stosowanie instrukcji DML
w języku PL/SQL
       Dozwolonymi instrukcjami DML w języku PL/SQL są instrukcje: 5'.'%6, +05'46, 72#6'
       oraz '.'6'. Instrukcje te działają w następujący sposób: instrukcja 5'.'%6 zwraca te
       wiersze z tabeli bazy danych, które odpowiadają kryteriom podanym w jej klauzuli 9*'4',
       instrukcja +05'46 dodaje wiersze do tabeli bazy danych, instrukcja 72#6' modyfikuje te
       wiersze w tabeli bazy danych, które odpowiadają klauzuli 9*'4', natomiast instrukcja '.'6'
       usuwa wiersze identyfikowane przez klauzulę 9*'4'. Poza klauzulą 9*'4' powy sze instruk-
       cje mogą uwzględniać tak e inne klauzule. Klauzule te opisano w kolejnych podrozdziałach
       niniejszego rozdziału.

       Podczas wykonywania instrukcji SQL w programie SQL*Plus wyniki tego wykonania
       są wyświetlane na ekranie. Przykładowy sposób takiego wyświetlania przedstawiono na
       rysunku 4.1. W przypadku wykonywania instrukcji 72#6', +05'46 lub '.'6' SQL*Plus
       zwraca liczbę przetwarzanych wierszy. W razie wykonywania instrukcji 5'.'%6 wiersze,
       które odpowiadają zapytaniu, są wyświetlane na ekranie.
100        Oracle8. Programowanie w języku PL/SQL


Rysunek 4.1.
Wyniki
wykonania
instrukcji SQL
w programie
SQL*Plus




           Nale y zwrócić uwagę na sposób zastosowania instrukcji 72#6'. Wyniki wykonania tej
           instrukcji pokazano na rysunku 4.1.

            72#6' %.#55'5
              5'6 PWOAETGFKVU  
              9*'4' FGRCTVOGPV  *+5
              #0 EQWTUG  

           Wszystkie wartości, które są wykorzystane w celu zmiany zawartości tabeli ENCUUGU, są
           ustalone — są znane podczas tworzenia instrukcji. Język PL/SQL usuwa to ogranicze-
           nie za pomocą zmiennych. Stosowanie zmiennych jest dozwolone wszędzie tam, gdzie
           w instrukcji SQL jest dozwolone stosowanie wyra eń. Jeśli zmienne są u ywane w opi-
           sywany sposób, są nazywane zmiennymi dowiązanymi. Przykładowo, w poprzedniej in-
           strukcji 72#6' mo na zastąpić wartość ustaloną liczby zaliczeń (PWOAETGFKVU) zmienną
           dowiązaną:

          Dostępne na płycie CD w skrypcie bindvar.sql


            '%.#4'
              XA0WO%TGFKVU ENCUUGUPWOAETGFKVU 6;2'
            $')+0
2T[RKU YCTVQUE OKGPPGL XA0WO%TGFKVU
XA0WO%TGFKVU  
              72#6' %.#55'5
                5'6 PWOAETGFKVU  XA0WO%TGFKVU
                9*'4' FGRCTVOGPV  *+5
                #0 EQWTUG  
            '0
Rozdział 4.    SQL w PL/SQL             101


           Nie wszystkie elementy w instrukcji SQL mogą być zastępowane zmiennymi — zastępować
           mo na tylko wyra enia. W szczególności muszą być znane nazwy tabel i kolumn. Jest
           to wymagane ze względu na wiązanie wczesne — nazwy obiektów Oracle muszą być
           znane w czasie kompilacji. Z definicji wartość zmiennej nie jest znana a do czasu uru-
           chomienia programu. W celu przezwycię enia tego ograniczenia mo na równie wyko-
           rzystywać pakiet $/5A53..

Instrukcja SELECT
           Instrukcja SELECT pobiera dane z bazy danych do zmiennych PL/SQL. Poni ej przedsta-
           wiono składnię instrukcji SELECT:




           W poni szej tabeli opisano wszystkie elementy.

Tabela 4.2. Klauzule wyboru instrukcji SELECT
 Klauzula wyboru        Opis
 GNGOGPVANKUV[AY[DQTW   Kolumna (lub wyra enie) do wybrania. Ka dy element listy wyboru jest oddzielony
                        przecinkiem i mo e być opcjonalnie identyfikowany przez alias (zamiennik).
                        Cały zbiór elementów listy w instrukcji 5'.'%6 nazywa się listą wyboru.
                        Znak
w składni jest skrótem zastępującym cały wiersz. W ten sposób są zwracane
                        poszczególne pola w tabeli w kolejności, w jakiej zdefiniowano pola.
 OKGPPC                Zmienna PL/SQL, do której będzie przekazany element listy wyboru. Ka da zmienna
                        powinna być kompatybilna ze swoim skojarzonym elementem listy wyboru.
                        Dlatego elementy listy oraz zmienne wyjściowe powinny istnieć w tej samej liczbie.
 TGMQTFA2.53.          Mo e być stosowany zamiast listy zmiennych. Rekord powinien zawierać pola,
                        które odpowiadają elementom z listy wyboru, ale równie pozwalają na łatwiejszą
                        manipulację zwracanymi danymi. Rekordy łączą powiązane pola w jednej jednostce
                        składniowej. W ten sposób mo na manipulować tymi polami zarówno jako grupą,
                        jak równie indywidualnie. Zagadnienia dotyczące rekordów opisano w dalszej
                        części niniejszego rozdziału. Je eli listą wyboru jest znak
, wtedy ten rekord mo e
                        być zdefiniowany jako QFYQNCPKGAVCDGNK 4196;2'.
 QFYQNCPKGAVCDGNK       Identyfikuje tabelę, z której mają być pobrane dane. Mo e być synonimem lub tabelą
                        w odległej bazie danych, określonej przez powiązanie z bazą danych. Więcej informacji
                        na temat odwołań tabel znajduje się w dalszej części niniejszego rozdziału.
 MNCWWNCAYJGTG         Kryterium dla tego zapytania. Klauzula ta identyfikuje wiersz, który będzie zwrócony
                        przez zapytanie. Kryterium składa się z warunków logicznych (boole’owskich)
                        łączonych operatorami logicznymi. Zagadnienia związane z kryteriami wyboru opisano
                        bardziej szczegółowo w dalszej części niniejszego rozdziału.
102   Oracle8. Programowanie w języku PL/SQL



        Ogólnie więcej klauzul jest dostępnych dla instrukcji 5'.'%6. Przykładowo, zaliczają się
        do nich klauzule 14'4' $; oraz )4172 $;. Szczegółowo omówiono je w rozdziale 6.
        Więcej informacji na ich temat znajduje się w publikacji Server SQL Reference.

      Instrukcja 5'.'%6 według podanej powy ej składni powinna zwracać najwy ej jeden wiersz.
      Klauzula 9*'4' jest sprawdzana dla ka dego wiersza w tabeli. Je eli odpowiada ona więcej
      ni jednemu wierszowi, PLSQL zwraca następujący komunikat o błędzie:
       14# 5KPINGTQY SWGT[ TGVWTPU OQTG VJCP QPG TQY
                
CR[VCPKG Q LGFGP YKGTU YTCEC YKGEGL PK LGFGP YKGTU

      W takim przypadku do pobrania ka dego wiersza osobno konieczne jest zastosowanie
      kursora. Więcej informacji na ten temat znajduje się w rozdziale 6.

      W poni szym przykładzie przedstawiono sposób zastosowania dwóch ró nych instrukcji
      5'.'%6:

      Dostępne na płycie CD w skrypcie select.sql


       '%.#4'
         XA5VWFGPV4GEQTF UVWFGPVU 4196;2'
         XAGRCTVOGPV     ENCUUGUFGRCTVOGPV 6;2'
         XA%QWTUG         ENCUUGUEQWTUG 6;2'
       $')+0
          2QDKGT LGFGP TGMQTF  VCDGNK UVWFGPVU K CEJQYCL Y TGMQTFKG
          XA5VWFGPV4GEQTF 0CNG[ YTQEKE WYCIG G MNCWWNC 9*'4'
          QFRQYKCFC V[NMQ LGFPGOW YKGTUQYK VCDGNK 0CNG[ TQYPKG YTQEKE
          WYCIG G CR[VCPKG YTCEC YU[UVMKG RQNC Y VCDGNK UVWFGPVU
          
RQPKGYC UVQUQYCP[ LGUV PCM
9 VGP URQUQD NCFQYCP[ TGMQTF
          LGUV FGHKPKQYCP[ LCMQ UVWFGPVU 4196;2'
         5'.'%6
+061 XA5VWFGPV4GEQTF
           (41/ UVWFGPVU
           9*'4' KF  

          2QDKGT FYC RQNC  VCDGNK ENCUUGU K CEJQYCL LG Y OKGPP[EJ
          XAGRCTVOGPV QTC XA%QWTUG PQYW CVGO MNCWWNC 9*'4' QFRQYKCFC
          V[NMQ LGFPGOW YKGTUQYK VCDGNK
         5'.'%6 FGRCTVOGPV EQWTUG
           +061 XAGRCTVOGPV XA%QWTUG
           (41/ ENCUUGU
           9*'4' TQQOAKF  
       '0


Instrukcja INSERT
      Składnię instrukcji +05'46 przedstawiono poni ej. Nale y zwrócić uwagę, e bezpośrednio
      w instrukcji nie występuje klauzula WHERE (chocia mo e ona występować w podza-
      pytaniu).

      Klauzula QFYQNCPKGAVCDGNK odwołuje się do tabeli Oracle, PCYCAMQNWOP[ odwołuje się
      do kolumny w tej tabeli, a Y[TCGPKG jest wyra eniem SQL lub PL/SQL, co zdefiniowano
      w poprzednim rozdziale. Odwołania do tabel omówiono bardziej szczegółowo w dalszej
Rozdział 4.   SQL w PL/SQL         103




części niniejszego rozdziału. Je eli instrukcja +05'46 zawiera KPUVTWMELCAUGNGEV, wtedy
elementy listy instrukcji UGNGEV powinny odpowiadać kolumnom, do których mają być
wstawiane dane.

Prawidłowe zastosowanie kilku instrukcji +05'46 przedstawiono w poni szym przykładzie:

Dostępne na płycie CD w skrypcie insert.sql


 '%.#4'
   XA5VWFGPV+ UVWFGPVUKF 6;2'
 $')+0
    2QDKGT PQY[ KFGPV[HKMCVQT + UVWFGPVC
   5'.'%6 UVWFGPVAUGSWGPEG0':68#.
     +061 XA5VWFGPV+
     (41/ FWCN

    QFCL YKGTU FQ VCDGNK UVWFGPVU
   +05'46 +061 UVWFGPVU 
KF HKTUVAPCOG NCUVAPCOG
     8#.7'5 
XA5VWFGPV+ 6KOQVJ[  6CNNGT 

    QFCL FTWIK YKGTU CNG W[L PWOGTW UGMYGPELK DGRQUTGFPKQ Y
    KPUVTWMELK +05'46
   +05'46 +061 UVWFGPVU 
KF HKTUVAPCOG NCUVAPCOG
     8#.7'5 
UVWFGPVAUGSWGPEG0':68#. 2CVTKEM  2QNN 
 '0

W następnym przykładzie przedstawiono nieprawidłowy sposób wykonania polecenia
+05'46. Elementy listy instrukcji 5'.'%6 podzapytania nie odpowiadają kolumnom, które
mają być wstawiane. Taka instrukcja powoduje zwrócenie błędu Oracle ORA-913: too
many values.
 +05'46 +061 TQQOU
   5'.'%6
(41/ ENCUUGU

Kolejny przykład przedstawia prawidłowo wydaną instrukcję +05'46. Przez wstawienie
kopii ka dego wiersza następuje podwojenie wielkości tabeli ENCUUGU.
 +05'46 +061 ENCUUGU
   5'.'%6
(41/ ENCUUGU

Wersja Oracle8 z opcją obiektów dostarcza dodatkową klauzulę dla instrukcji +05'46 —
klauzuli 4'( +061. W razie zastosowania tej klauzuli z tabelami obiektów jest zwracane
odwołanie do wstawianego obiektu. Więcej informacji na ten temat znajduje się w roz-
dziale 11.
104   Oracle8. Programowanie w języku PL/SQL



Instrukcja UPDATE
      Poni ej przedstawiono składnię instrukcji 72#6':




      Klauzula QFYQNCPKGAVCDGNK odwołuje się do modyfikowanej tabeli, PCYCAMQNWOP[ jest
      nazwą kolumny, której wartość ma być zmieniona, a Y[TCGPKG jest wyra eniem SQL,
      co zdefiniowano w rozdziale 2. Je eli instrukcja 72#6' zawiera KPUVTWMELCA5'.'%6,
      elementy listy wyboru powinny odpowiadać kolumnom w klauzuli 5'6.

      W poni szym przykładzie pokazano zastosowanie instrukcji 72#6':

      Dostępne na płycie CD w skrypcie update.sql


       '%.#4'
         XA/CLQT           UVWFGPVUOCLQT 6;2'
         XA%TGFKV+PETGCUG 07/$'4  
       $')+0
          6C KPUVTWMELC 72#6' FQFC  FQ RQNC EWTTGPVAETGFKVU
          FNC YU[UVMKEJ UVWFGPVQY MVQT[ UVWFKWLC *KUVQTKG
         XA/CLQT  *KUVQT[ 
         72#6' UVWFGPVU
           5'6 EWTTGPVAETGFKVU  EWTTGPVAETGFKVU 
 XA%TGFKV+PETGCUG
           9*'4' OCLQT  XA/CLQT
       '0


Instrukcja DELETE
      Instrukcja '.'6' usuwa wiersze z tabeli bazy danych. Klauzula 9*'4' wskazuje, które
      wiersze mają być usunięte. Poni ej podana jest składnia instrukcji '.'6':
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL

Weitere ähnliche Inhalte

Andere mochten auch

Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIWydawnictwo Helion
 
Raport Fundusze Inwestycyjne Inwestycja 10 Letnia
Raport Fundusze Inwestycyjne Inwestycja 10 LetniaRaport Fundusze Inwestycyjne Inwestycja 10 Letnia
Raport Fundusze Inwestycyjne Inwestycja 10 LetniaRemigiusz Stanisławek
 
Metodyka pracy z nieletnimi w instytucjach izolacyjnych
Metodyka pracy z nieletnimi w instytucjach izolacyjnychMetodyka pracy z nieletnimi w instytucjach izolacyjnych
Metodyka pracy z nieletnimi w instytucjach izolacyjnychKatarzyna Borys
 
Codename Panzers Cold War Poradnik Gry On Line
Codename Panzers Cold War   Poradnik Gry On LineCodename Panzers Cold War   Poradnik Gry On Line
Codename Panzers Cold War Poradnik Gry On Lineguest3a440a
 
TFs in CD4 differentiation
TFs in CD4 differentiationTFs in CD4 differentiation
TFs in CD4 differentiationdoure
 
Wytyczne kwalifikowalnosci wydatkow_poir_28082015
Wytyczne kwalifikowalnosci wydatkow_poir_28082015Wytyczne kwalifikowalnosci wydatkow_poir_28082015
Wytyczne kwalifikowalnosci wydatkow_poir_28082015Open Concept
 
Leksykon Symboli 1000 Haseĺ‚[1]
Leksykon Symboli   1000 Haseĺ‚[1]Leksykon Symboli   1000 Haseĺ‚[1]
Leksykon Symboli 1000 Haseĺ‚[1]Miroslaw Duczkowski
 
Asystent.osoby.niepelnosprawnej 346[02] z2.01_u
Asystent.osoby.niepelnosprawnej 346[02] z2.01_uAsystent.osoby.niepelnosprawnej 346[02] z2.01_u
Asystent.osoby.niepelnosprawnej 346[02] z2.01_uMateusz Krumpolc
 
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]krzysdom
 
Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Pola Honorata
 
Temat 6 -_proces_spalania_a_pozar_[prezentacja]
Temat 6 -_proces_spalania_a_pozar_[prezentacja]Temat 6 -_proces_spalania_a_pozar_[prezentacja]
Temat 6 -_proces_spalania_a_pozar_[prezentacja]krzysdom
 
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJ
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJFlaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJ
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJFläktGroup Poland Sp. z o.o.
 

Andere mochten auch (14)

Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
 
Raport Fundusze Inwestycyjne Inwestycja 10 Letnia
Raport Fundusze Inwestycyjne Inwestycja 10 LetniaRaport Fundusze Inwestycyjne Inwestycja 10 Letnia
Raport Fundusze Inwestycyjne Inwestycja 10 Letnia
 
Metodyka pracy z nieletnimi w instytucjach izolacyjnych
Metodyka pracy z nieletnimi w instytucjach izolacyjnychMetodyka pracy z nieletnimi w instytucjach izolacyjnych
Metodyka pracy z nieletnimi w instytucjach izolacyjnych
 
BRE-CASE Seminarium 90 - SEPA - A Revolution in Banking
BRE-CASE Seminarium 90  -  SEPA - A Revolution in BankingBRE-CASE Seminarium 90  -  SEPA - A Revolution in Banking
BRE-CASE Seminarium 90 - SEPA - A Revolution in Banking
 
Codename Panzers Cold War Poradnik Gry On Line
Codename Panzers Cold War   Poradnik Gry On LineCodename Panzers Cold War   Poradnik Gry On Line
Codename Panzers Cold War Poradnik Gry On Line
 
TFs in CD4 differentiation
TFs in CD4 differentiationTFs in CD4 differentiation
TFs in CD4 differentiation
 
CSB NBP sprawozdanie z realizacji projektu
CSB NBP sprawozdanie z realizacji projektuCSB NBP sprawozdanie z realizacji projektu
CSB NBP sprawozdanie z realizacji projektu
 
Wytyczne kwalifikowalnosci wydatkow_poir_28082015
Wytyczne kwalifikowalnosci wydatkow_poir_28082015Wytyczne kwalifikowalnosci wydatkow_poir_28082015
Wytyczne kwalifikowalnosci wydatkow_poir_28082015
 
Leksykon Symboli 1000 Haseĺ‚[1]
Leksykon Symboli   1000 Haseĺ‚[1]Leksykon Symboli   1000 Haseĺ‚[1]
Leksykon Symboli 1000 Haseĺ‚[1]
 
Asystent.osoby.niepelnosprawnej 346[02] z2.01_u
Asystent.osoby.niepelnosprawnej 346[02] z2.01_uAsystent.osoby.niepelnosprawnej 346[02] z2.01_u
Asystent.osoby.niepelnosprawnej 346[02] z2.01_u
 
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]
Temat 9 -_rozwijanie_linii_i_zajmowanie_stanowisk_gasniczych_[prezentacja]
 
Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4
 
Temat 6 -_proces_spalania_a_pozar_[prezentacja]
Temat 6 -_proces_spalania_a_pozar_[prezentacja]Temat 6 -_proces_spalania_a_pozar_[prezentacja]
Temat 6 -_proces_spalania_a_pozar_[prezentacja]
 
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJ
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJFlaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJ
Flaktwoods fire ventilation guide PORADNIK WENTYLACJI POŻAROWEJ
 

Ähnlich wie Oracle8. Programowanie w języku PL/SQL

Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychWydawnictwo Helion
 
Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanieWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawWydawnictwo Helion
 
Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychWydawnictwo Helion
 
Oracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościOracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościWydawnictwo Helion
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowaniaWydawnictwo Helion
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 

Ähnlich wie Oracle8. Programowanie w języku PL/SQL (20)

Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkujących
 
Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanie
 
SQL. Od podstaw
SQL. Od podstawSQL. Od podstaw
SQL. Od podstaw
 
SQL. Optymalizacja
SQL. OptymalizacjaSQL. Optymalizacja
SQL. Optymalizacja
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstaw
 
SQL w mgnieniu oka
SQL w mgnieniu okaSQL w mgnieniu oka
SQL w mgnieniu oka
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
XSLT dla każdego
XSLT dla każdegoXSLT dla każdego
XSLT dla każdego
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
Perl. Od podstaw
Perl. Od podstawPerl. Od podstaw
Perl. Od podstaw
 
SQL. Szybki start
SQL. Szybki startSQL. Szybki start
SQL. Szybki start
 
Algorytmy w Perlu
Algorytmy w PerluAlgorytmy w Perlu
Algorytmy w Perlu
 
Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danych
 
Oracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościOracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajności
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowania
 
Prolog. Programowanie
Prolog. ProgramowanieProlog. Programowanie
Prolog. Programowanie
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 

Mehr von Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

Mehr von Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Oracle8. Programowanie w języku PL/SQL

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Oracle8. Programowanie KATALOG KSI¥¯EK w jêzyku PL/SQL KATALOG ONLINE Autor: Scott Urman T³umaczenie: Tomasz Pêdziwiatr, Grzegorz Stawikowski, ZAMÓW DRUKOWANY KATALOG Cezary Welsyng ISBN: 83-7197-533-3 Tytu³ orygina³u: Oracle8 PL/SQL Programming TWÓJ KOSZYK Format: B5, stron: 762 DODAJ DO KOSZYKA Wykorzystanie wbudowanego w system Oracle jêzyka PL/SQL w znacz¹cy sposób powiêksza potencja³ programisty systemów bazodanowych. PL/SQL ³¹czy w sobie du¿e mo¿liwo ci i elastyczno æ jêzyka czwartej generacji (4GL) SQL z konstrukcjami CENNIK I INFORMACJE proceduralnymi jêzyka trzeciej generacji (3GL). Programy napisane w tym jêzyku umo¿liwiaj¹ obs³ugê danych zarówno w samym systemie Oracle, jak i w zewnêtrznych aplikacjach. ZAMÓW INFORMACJE O NOWO CIACH Ksi¹¿ka „Oracle8. Programowanie w jêzyku PL/SQL” to wyczerpuj¹ce omówienie jêzyka PL/SQL. To doskona³a pozycja u³atwiaj¹ca naukê tego jêzyka, wietnie te¿ sprawdza ZAMÓW CENNIK siê jako podrêczne kompendium wiedzy o PL/SQL, pomocne w codziennej pracy. Liczne przyk³ady uzupe³niaj¹ informacje zawarte w ksi¹¿ce pokazuj¹c sprawdzone metody rozwi¹zywania problemów, napotykanych przez programistów. CZYTELNIA W ksi¹¿ce omówiono miêdzy innymi: • Podstawy jêzyka PL/SQL: struktura programu, zmienne, typy, wyra¿enia FRAGMENTY KSI¥¯EK ONLINE i operatory oraz instrukcje steruj¹ce • Korzystanie z rekordów i tabel • Korzystanie z SQL z poziomu PL/SQL, funkcje SQL dostêpne w PL/SQL • Tworzenie i u¿ywanie kursorów • Bloki w PL/SQL: podprogramy (procedury i funkcje), pakiety i wyzwalacze • Metody obs³ugi b³êdów w PL/SQL • Obiekty w PL/SQL, kolekcje • Testowanie i wykrywanie b³êdów • Zagadnienia zaawansowane: dynamiczny PL/SQL, komunikacja miêdzy sesjami, kolejkowanie, obs³uga zadañ, procedury zewnêtrzne • Optymalizacja aplikacji PL/SQL i metody zapewnienia maksymalnej wydajno ci Wydawnictwo Helion Ksi¹¿ka jest przeznaczona zarówno dla do wiadczonych programistów, jak i tych, ul. Chopina 6 którzy jeszcze nie poznali innych jêzyków trzeciej generacji. Przydatna, choæ 44-100 Gliwice niekonieczna, jest ogólna znajomo æ systemu Oracle (³¹czenie siê i korzystanie z bazy tel. (32)230-98-63 danych, podstawy jêzyka SQL, itp.). e-mail: helion@helion.pl
  • 2. Spis treści Wstęp ...................................................................................................17 Rozdział 1. Wprowadzenie do PL/SQL......................................................................23 Dlaczego język PL/SQL?..........................................................................................................23 Model klient-serwer............................................................................................................25 Normy .................................................................................................................................26 Właściwości języka PL/SQL ....................................................................................................26 Struktura bloku ...................................................................................................................26 Zmienne i typy danych .......................................................................................................27 Konstrukcje pętlowe ...........................................................................................................28 Konwencje stosowane w niniejszej ksią ce..............................................................................30 Wersje języka PL/SQL oraz bazy danych Oracle...............................................................30 Dokumentacja Oracle .........................................................................................................31 Kod dostępny na płycie CD................................................................................................32 Przykładowe tabele ...................................................................................................................32 Podsumowanie ..........................................................................................................................38 Rozdział 2. Podstawy języka PL/SQL .......................................................................39 Blok PL/SQL.............................................................................................................................39 Podstawowa struktura bloku...............................................................................................42 Jednostki leksykalne .................................................................................................................44 Identyfikatory .....................................................................................................................44 Ograniczniki .......................................................................................................................46 Literały................................................................................................................................48 Komentarze.........................................................................................................................49 Deklaracje zmiennych...............................................................................................................51 Składnia deklaracji..............................................................................................................51 Inicjowanie zmiennych.......................................................................................................52 Typy danych w języku PL/SQL................................................................................................53 Typy skalarne......................................................................................................................53 Typy zło one ......................................................................................................................60 Typy odwołania ..................................................................................................................60 Typy LOB...........................................................................................................................60 Wykorzystanie atrybutu %Type .........................................................................................61 Podtypy definiowane przez u ytkownika...........................................................................62 Konwersja pomiędzy typami danych..................................................................................62 Zakres i widoczność zmiennej............................................................................................64 Wyra enia i operatory...............................................................................................................65 Przypisanie..........................................................................................................................66 Wyra enia ...........................................................................................................................67
  • 3. 6 Oracle8. Programowanie w języku PL/SQL Struktury sterowania PL/SQL...................................................................................................69 Instrukcja IF-THEN-ELSE.................................................................................................70 Pętle ....................................................................................................................................73 Instrukcje GOTO oraz etykiety ..........................................................................................77 Dyrektywy pragma .............................................................................................................80 Styl programowania w języku PL/SQL ....................................................................................80 Wprowadzanie komentarzy ................................................................................................81 Nazywanie zmiennych........................................................................................................82 Stosowanie du ych liter......................................................................................................82 Odstępy w kodzie programu...............................................................................................82 Ogólne uwagi dotyczące stylu programowania..................................................................83 Podsumowanie ..........................................................................................................................83 Rozdział 3. Rekordy i tabele ....................................................................................85 Rekordy w języku PL/SQL .......................................................................................................85 Przypisanie rekordu ............................................................................................................86 Stosowanie operatora %ROWTYPE ..................................................................................88 Tabele........................................................................................................................................88 Tabele a tablice ...................................................................................................................89 Atrybuty tabeli ....................................................................................................................91 Wytyczne stosowania tabel PL/SQL ..................................................................................94 Podsumowanie ..........................................................................................................................95 Rozdział 4. SQL w PL/SQL.......................................................................................97 Instrukcje SQL ..........................................................................................................................97 Wykorzystanie instrukcji SQL w języku PL/SQL..............................................................98 Stosowanie instrukcji DML w języku PL/SQL ........................................................................99 Instrukcja SELECT...........................................................................................................101 Instrukcja INSERT ...........................................................................................................102 Instrukcja UPDATE..........................................................................................................104 Instrukcja DELETE ..........................................................................................................104 Klauzula WHERE.............................................................................................................105 Odwołania do tabel ...........................................................................................................108 Powiązania bazy danych...................................................................................................109 Synonimy..........................................................................................................................110 Pseudokolumny.......................................................................................................................110 Pseudokolumny CURRVAL oraz NEXTVAL.................................................................110 Pseudokolumna LEVEL ...................................................................................................111 Pseudokolumna ROWID ..................................................................................................111 Pseudokolumna ROWNUM .............................................................................................112 Instrukcje GRANT i REVOKE. Uprawnienia........................................................................112 Uprawnienia obiektowe a uprawnienia systemowe..........................................................113 Instrukcje GRANT oraz REVOKE ..................................................................................113 Role...................................................................................................................................115 Sterowanie transakcjami .........................................................................................................116 Instrukcja COMMIT a instrukcja ROLLBACK...............................................................116 Punkty zachowania ...........................................................................................................118 Transakcje a bloki.............................................................................................................119 Podsumowanie ........................................................................................................................120 Rozdział 5. Wbudowane funkcje SQL......................................................................121 Wstęp ......................................................................................................................................121 Funkcje znakowe zwracające wartości znakowe ....................................................................122 CHR ..................................................................................................................................122 CONCAT..........................................................................................................................122
  • 4. Spis treści 7 INITCAP...........................................................................................................................123 LOWER ............................................................................................................................123 LPAD................................................................................................................................124 LTRIM..............................................................................................................................125 NLS_INITCAP .................................................................................................................125 NLS_LOWER...................................................................................................................126 NLS_UPPER ....................................................................................................................126 REPLACE.........................................................................................................................127 RPAD................................................................................................................................128 RTRIM..............................................................................................................................128 SOUNDEX .......................................................................................................................129 SUBSTR ...........................................................................................................................130 SUBSTRB.........................................................................................................................131 TRANSLATE ...................................................................................................................131 UPPER..............................................................................................................................132 Funkcje znakowe zwracające wartości liczbowe....................................................................133 ASCII................................................................................................................................133 INSTR...............................................................................................................................133 INSTRB ............................................................................................................................134 LENGTH ..........................................................................................................................135 LENGTHB........................................................................................................................135 NLSSORT.........................................................................................................................136 Funkcje numeryczne ...............................................................................................................136 ABS...................................................................................................................................136 ACOS................................................................................................................................137 ASIN .................................................................................................................................137 ATAN ...............................................................................................................................138 ATAN2 .............................................................................................................................138 CEIL .................................................................................................................................139 COS...................................................................................................................................139 COSH................................................................................................................................140 EXP...................................................................................................................................140 FLOOR .............................................................................................................................140 LN .....................................................................................................................................141 LOG ..................................................................................................................................141 MOD .................................................................................................................................142 POWER ............................................................................................................................142 ROUND ............................................................................................................................143 SIGN .................................................................................................................................143 SIN....................................................................................................................................144 SINH .................................................................................................................................144 SQRT ................................................................................................................................144 TAN ..................................................................................................................................145 TANH ...............................................................................................................................145 TRUNC.............................................................................................................................146 Funkcje związane z datą .........................................................................................................146 ADD_MONTHS...............................................................................................................146 LAST_DAY......................................................................................................................147 MONTHS_BETWEEN ....................................................................................................147 NEW_TIME .....................................................................................................................148 NEXT_DAY .....................................................................................................................149 ROUND ............................................................................................................................149 SYSDATE ........................................................................................................................150 TRUNC.............................................................................................................................151
  • 5. 8 Oracle8. Programowanie w języku PL/SQL Funkcje dokonujące konwersji................................................................................................152 CHARTOROWID ............................................................................................................152 CONVERT .......................................................................................................................153 HEXTORAW ...................................................................................................................153 RAWTOHEX ...................................................................................................................154 ROWIDTOCHAR ............................................................................................................154 TO_CHAR(daty) ..............................................................................................................155 TO_CHAR(etykiety) ........................................................................................................155 TO_CHAR(liczba)............................................................................................................157 TO_DATE ........................................................................................................................159 TO_LABEL ......................................................................................................................159 TO_MULTI_BYTE..........................................................................................................160 TO_NUMBER..................................................................................................................160 TO_SINGLE_BYTE ........................................................................................................161 Funkcje grupowe.....................................................................................................................161 AVG..................................................................................................................................161 COUNT.............................................................................................................................162 GLB ..................................................................................................................................163 LUB ..................................................................................................................................163 MAX .................................................................................................................................163 MIN...................................................................................................................................164 STDDEV...........................................................................................................................164 SUM..................................................................................................................................165 VARIANCE......................................................................................................................165 Inne funkcje.............................................................................................................................166 BFILENAME ...................................................................................................................166 DECODE ..........................................................................................................................166 DUMP...............................................................................................................................167 EMPTY_CLOB/EMPTY_BLOB.....................................................................................169 GREATEST......................................................................................................................169 GREATEST_LB...............................................................................................................170 LEAST..............................................................................................................................170 LEAST_UB ......................................................................................................................170 NVL ..................................................................................................................................171 UID ...................................................................................................................................171 USER ................................................................................................................................172 USERENV........................................................................................................................172 VSIZE ...............................................................................................................................173 PL/SQL w działaniu. Drukowanie liczb w postaci tekstowej.................................................174 Podsumowanie ........................................................................................................................180 Rozdział 6. Kursory ...............................................................................................181 Czym jest kursor?....................................................................................................................181 Przetwarzanie kursorów jawnych .....................................................................................182 Przetwarzanie kursorów niejawnych ................................................................................189 Pętle pobierania danych kursora .............................................................................................191 Pętle proste........................................................................................................................191 Pętle WHILE ....................................................................................................................193 Pętle FOR kursora.............................................................................................................194 Wyjątek NO_DATA_FOUND kontra atrybut %NOTFOUND .......................................195 Kursory z klauzulą FOR UPDATE instrukcji SELECT...................................................196 Zmienne kursora .....................................................................................................................199 Deklaracja zmiennej kursora ............................................................................................200 Przydzielenie obszaru pamięci dla zmiennych kursora ....................................................201 Otwieranie zmiennej kursora dla zapytania......................................................................202
  • 6. Spis treści 9 Zamykanie zmiennych kursora.........................................................................................203 Pierwszy przykład zmiennej kursora ................................................................................203 Drugi przykład zmiennej kursora .....................................................................................205 Ograniczenia u ycia zmiennych kursora ..........................................................................206 Podsumowanie ........................................................................................................................207 Rozdział 7. Podprogramy: procedury i funkcje ........................................................209 Tworzenie procedur i funkcji..................................................................................................209 Tworzenie procedury ........................................................................................................210 Tworzenie funkcji.............................................................................................................221 Wyjątki wywoływane wewnątrz podprogramów .............................................................224 Usuwanie procedur i funkcji.............................................................................................226 Poło enie podprogramów .......................................................................................................226 Składowane podprogramy oraz słownik danych ..............................................................226 Podprogramy lokalne........................................................................................................228 Zale ności dotyczące podprogramów.....................................................................................231 Określanie zale ności .......................................................................................................233 Uprawnienia i podprogramy składowane ...............................................................................236 Uprawnienie EXECUTE ..................................................................................................236 Składowane podprogramy i role.......................................................................................237 Podsumowanie ........................................................................................................................239 Rozdział 8. Pakiety ...............................................................................................241 Pakiety.....................................................................................................................................241 Specyfikacja pakietu.........................................................................................................241 Ciało pakietu.....................................................................................................................243 Pakiety i zakres .................................................................................................................245 Przecią enie podprogramów pakietowych .......................................................................246 Inicjalizacja pakietu ..........................................................................................................247 Pakiety i zale ności...........................................................................................................249 Stosowanie składowanych funkcji w instrukcjach SQL .........................................................251 Poziomy czystości ............................................................................................................252 Parametry domyślne .........................................................................................................256 PL/SQL w działaniu — Eksporter schematów PL/SQL.........................................................256 Podsumowanie ........................................................................................................................264 Rozdział 9. Wyzwalacze.........................................................................................265 Tworzenie wyzwalaczy...........................................................................................................265 Komponenty wyzwalacza.................................................................................................267 Wyzwalacze i słownik danych..........................................................................................270 Kolejność uruchamiania wyzwalaczy...............................................................................272 Stosowanie wartości :old oraz :new w wyzwalaczach na poziomie wiersza ...................273 Korzystanie z predykatów wyzwalacza: INSERTING, UPDATING oraz DELETING.....276 Tabele mutujące ......................................................................................................................278 Przykład tabeli mutującej .................................................................................................280 Rozwiązanie problemu błędu tabeli mutującej.................................................................281 PL/SQL w działaniu — wdra anie techniki kaskadowego uaktualniania ..............................283 Program narzędziowy kaskadowego uaktualniania..........................................................285 Działanie pakietu kaskadowego uaktualniania.................................................................288 Podsumowanie ........................................................................................................................292 Rozdział 10. Obsługa błędów ...................................................................................293 Zdefiniowanie wyjątku ...........................................................................................................293 Deklarowanie wyjątków ...................................................................................................295 Wywoływanie wyjątków ..................................................................................................298 Obsługa wyjątków ............................................................................................................299
  • 7. 10 Oracle8. Programowanie w języku PL/SQL Dyrektywa pragma EXCEPTION_INIT ..........................................................................305 Stosowanie funkcji RAISE_APPLICATION_ERROR ...................................................305 Propagacja wyjątków ..............................................................................................................308 Wyjątki wywołane w sekcji wykonania ...........................................................................308 Wyjątki wywołane w sekcji deklaracji .............................................................................310 Wyjątki wywołane w sekcji wyjątków .............................................................................312 Wytyczne wyjątków................................................................................................................314 Zakres wyjątków...............................................................................................................314 Unikanie nieobsługiwanych wyjątków.............................................................................315 Maskowanie lokalizacji błędu ..........................................................................................315 PL/SQL w działaniu — ogólny program obsługi błędów.......................................................316 Podsumowanie ........................................................................................................................324 Rozdział 11. Obiekty ...............................................................................................325 Wprowadzenie ........................................................................................................................325 Podstawy programowania obiektowego ...........................................................................325 Obiektowo-relacyjne bazy danych ...................................................................................327 Typy obiektów ........................................................................................................................328 Definiowanie typów obiektowych....................................................................................328 Deklarowanie i inicjalizacja obiektów..............................................................................330 Metody..............................................................................................................................332 Zmiana i usuwanie typów.................................................................................................338 Zale ności między obiektami ...........................................................................................340 Obiekty w bazie danych..........................................................................................................340 Poło enie obiektów...........................................................................................................341 Obiekty w instrukcjach DML ...........................................................................................344 Metody MAP i ORDER....................................................................................................349 Podsumowanie ........................................................................................................................351 Rozdział 12. Kolekcje..............................................................................................353 Tabele zagnie d one ...............................................................................................................353 Deklarowanie tabeli zagnie d onej ..................................................................................353 Zagnie d one tabele w bazie danych ...............................................................................356 Tabele zagnie d one a tabele indeksowe .........................................................................361 Tablice o zmiennym rozmiarze...............................................................................................361 Deklarowanie tablicy o zmiennym rozmiarze ..................................................................362 Tablice o zmiennym rozmiarze w bazie danych...............................................................363 Tablice o zmiennym rozmiarze a tabele zagnie d one ....................................................365 Metody dla kolekcji ................................................................................................................366 EXISTS.............................................................................................................................366 COUNT.............................................................................................................................367 LIMIT ...............................................................................................................................368 FIRST i LAST ..................................................................................................................368 NEXT i PRIOR.................................................................................................................369 EXTEND ..........................................................................................................................369 TRIM ................................................................................................................................371 DELETE ...........................................................................................................................373 Podsumowanie ........................................................................................................................374 Rozdział 13. Środowiska wykonawcze PL/SQL .........................................................375 Ró ne mechanizmy języka PL/SQL .......................................................................................375 Implikacje umieszczenia mechanizmu PL/SQL po stronie klienta ..................................377 Mechanizm PL/SQL po stronie serwera .................................................................................378 Program SQL*Plus ...........................................................................................................378 Prekompilatory Oracle......................................................................................................383
  • 8. Spis treści 11 OCI ...................................................................................................................................389 Program SQL-Station .......................................................................................................392 Mechanizm PL/SQL po stronie klienta...................................................................................396 Przyczyny wykorzystywania mechanizmu PL/SQL po stronie klienta............................396 Program Oracle Forms......................................................................................................397 Program Procedure Builder ..............................................................................................399 Wrapper PL/SQL ....................................................................................................................401 Wykonanie wrappera ........................................................................................................401 Pliki wejścia i wyjścia ......................................................................................................402 Sprawdzanie syntaktyki i semantyki ................................................................................402 Wytyczne dla programu wrapper......................................................................................403 Podsumowanie ........................................................................................................................403 Rozdział 14. Testowanie i wykrywanie błędów..........................................................405 Diagnostyka problemu ............................................................................................................405 Wytyczne wykrywania i usuwania błędów ......................................................................405 Pakiet Debug słu ący do wykrywania i usuwania błędów...............................................407 Wstawianie do tabeli testowania.............................................................................................407 Problem 1..........................................................................................................................407 Pakiet DBMS_OUTPUT ........................................................................................................415 Składniki pakietu DBMS_OUTPUT ................................................................................416 Problem 2..........................................................................................................................420 Programy PL/SQL słu ące do wykrywania i usuwania błędów .............................................426 Program Procedure Builder.....................................................................................................426 Problem 3..........................................................................................................................426 Program SQL-Station..............................................................................................................432 Problem 4..........................................................................................................................433 Porównanie programów Procedure Builder i SQL-Station.....................................................437 Metodyka programowania ......................................................................................................438 Programowanie modularne...............................................................................................438 Projektowanie zstępujące..................................................................................................439 Abstrakcja danych ............................................................................................................440 Podsumowanie ........................................................................................................................440 Rozdział 15. Dynamiczny PL/SQL ............................................................................441 Wprowadzenie ........................................................................................................................441 Instrukcje SQL statyczne a instrukcje dynamiczne ..........................................................441 Ogólny opis pakietu DBMS_SQL ....................................................................................442 Wykonywanie instrukcji DML oraz DDL nie będących zapytaniami....................................446 Otwieranie kursora............................................................................................................447 Parsowanie instrukcji........................................................................................................447 Wiązanie ka dej zmiennej wejściowej .............................................................................448 Wykonanie instrukcji........................................................................................................450 Zamykanie kursora ...........................................................................................................450 Przykład ............................................................................................................................451 Wykonywanie instrukcji DDL..........................................................................................452 Wykonywanie zapytań......................................................................................................453 Parsowanie instrukcji........................................................................................................454 Zdefiniowanie zmiennych wyjściowych ..........................................................................454 Pobieranie wierszy............................................................................................................456 Zwracanie wyników do zmiennych PL/SQL....................................................................456 Przykład ............................................................................................................................458 Wykonywanie bloku PL/SQL.................................................................................................461 Parsowanie instrukcji........................................................................................................461 Pobranie wartości ka dej zmiennej wyjściowej ...............................................................462
  • 9. 12 Oracle8. Programowanie w języku PL/SQL Przykład ............................................................................................................................463 Zastosowanie parametru out_value_size ..........................................................................465 PL/SQL w działaniu — wykonywanie dowolnych procedur składowanych .........................466 Udoskonalenia pakietu DBMS_SQL w wydaniu PL/SQL 8.0 ...............................................472 Parsowanie du ych ciągów znaków instrukcji SQL.........................................................473 Przetwarzanie tablicowe za pomocą pakietu DBMS_SQL ..............................................474 Opisywanie listy instrukcji SELECT................................................................................478 Ró ne procedury .....................................................................................................................481 Pobieranie danych typu LONG ........................................................................................481 Dodatkowe funkcje obsługi błędów .................................................................................482 PL/SQL w działaniu — zapisywanie wartości typu LONG do pliku .....................................484 Uprawnienia a pakiet DBMS_SQL.........................................................................................486 Uprawnienia wymagane dla pakietu DBMS_SQL...........................................................486 Role a pakiet DBMS_SQL ...............................................................................................487 Porównanie pakietu DBMS_SQL z innymi metodami przetwarzania dynamicznego ...........487 Opisywanie listy instrukcji SELECT................................................................................488 Przetwarzanie tablicowe ...................................................................................................488 Operacje dzielenia na części danych typu LONG ............................................................488 Ró nice interfejsów ..........................................................................................................489 Wskazówki i techniki..............................................................................................................489 Ponowne zastosowanie kursorów .....................................................................................489 Zezwolenia........................................................................................................................489 Zawieszenia programu związane z operacjami DDL .......................................................490 Podsumowanie ........................................................................................................................490 Rozdział 16. Komunikacja między sesjami................................................................491 Pakiet DBMS_PIPE ................................................................................................................491 Wysyłanie komunikatu .....................................................................................................495 Odbieranie komunikatu ....................................................................................................496 Tworzenie potoków i zarządzanie nimi............................................................................498 Uprawnienia i bezpieczeństwo .........................................................................................500 Ustanawianie protokołu komunikacji ...............................................................................501 Przykład ............................................................................................................................503 Pakiet DBMS_ALERT ...........................................................................................................509 Wysyłanie ostrze enia ......................................................................................................509 Odbieranie ostrze enia......................................................................................................509 Inne procedury ..................................................................................................................511 Ostrze enia i słownik danych ...........................................................................................512 Porównanie pakietów DBMS_PIPE i DBMS_ALERT ..........................................................514 Podsumowanie ........................................................................................................................515 Rozdział 17. Zaawansowane kolejkowanie w Oracle.................................................517 Wprowadzenie ........................................................................................................................517 Elementy systemu zaawansowanego kolejkowania .........................................................518 Realizacja zaawansowanego kolejkowania ......................................................................520 Operacje na kolejkach.............................................................................................................520 Typy pomocnicze..............................................................................................................521 Operacja ENQUEUE ........................................................................................................525 Operacja DEQUEUE ........................................................................................................526 Administrowanie kolejką ........................................................................................................526 Podprogramy pakietu DBMS_AQADM ..........................................................................526 Uprawnienia do kolejek....................................................................................................533 Kolejki i słownik danych ..................................................................................................533 Przykłady ................................................................................................................................536 Tworzenie kolejek i tabel kolejek.....................................................................................536 Proste wstawianie i odbieranie komunikatów ..................................................................538
  • 10. Spis treści 13 „Czyszczenie” kolejek ......................................................................................................539 Wstawianie i odbieranie komunikatów z uwzględnieniem priorytetów...........................540 Wstawianie i odbieranie komunikatów z wykorzystaniem identyfikatora korelacji lub identyfikatora komunikatu ....................................................................542 Przeglądanie kolejek.........................................................................................................544 Stosowanie kolejek wyjątków ..........................................................................................546 Usuwanie kolejek..............................................................................................................548 Podsumowanie ........................................................................................................................549 Rozdział 18. Obsługa zadań i plików w bazie danych ................................................551 Zadania w bazie danych..........................................................................................................551 Procesy drugoplanowe......................................................................................................551 Uruchamianie zadania ......................................................................................................552 Zadania niewykonane .......................................................................................................556 Usuwanie zadania .............................................................................................................557 Dokonywanie zmian w zadaniu........................................................................................557 Przeglądanie zadań w słowniku danych ...........................................................................558 Warunki wykonywania zadań...........................................................................................558 Obsługa plików .......................................................................................................................558 Zabezpieczenia .................................................................................................................559 Wyjątki w pakiecie UTL_FILE ........................................................................................560 Otwieranie i zamykanie plików ........................................................................................561 Zapis do pliku ...................................................................................................................563 Odczyt z pliku...................................................................................................................566 Przykłady ..........................................................................................................................566 Podsumowanie ........................................................................................................................573 Rozdział 19. Serwer WWW Oracle............................................................................575 Środowisko serwera WWW Oracle ........................................................................................575 Agent PL/SQL ..................................................................................................................577 Określanie wartości parametrów w procedurach..............................................................578 Narzędzia WWW w PL/SQL..................................................................................................580 Pakiety HTP i HTF ...........................................................................................................580 Pakiet OWA_UTIL...........................................................................................................594 Pakiet OWA_IMAGE.......................................................................................................601 Pakiet OWA_COOKIE.....................................................................................................604 Tworzenie procedur OWA......................................................................................................607 Procedura OWA_UTIL.SHOWPAGE .............................................................................607 SQL-Station ......................................................................................................................608 Podsumowanie ........................................................................................................................608 Rozdział 20. Procedury zewnętrzne ..........................................................................609 Czym jest procedura zewnętrzna?...........................................................................................609 Wywoływanie procedury zewnętrznej .............................................................................610 Odwzorowywanie parametrów.........................................................................................617 Funkcje i procedury zewnętrzne w pakietach...................................................................624 Połączenie zwrotne z bazą danych..........................................................................................626 Podprogramy usługowe ....................................................................................................626 Wykonywanie instrukcji SQL w procedurze zewnętrznej ...............................................629 Wskazówki, wytyczne i ograniczenia.....................................................................................630 Wykrywanie błędów w procedurach zewnętrznych .........................................................630 Wytyczne ..........................................................................................................................632 Ograniczenia .....................................................................................................................633 Podsumowanie ........................................................................................................................634
  • 11. 14 Oracle8. Programowanie w języku PL/SQL Rozdział 21. Duże obiekty .......................................................................................635 Czym są du e obiekty? ...........................................................................................................635 Składowanie du ych obiektów .........................................................................................636 Du e obiekty w instrukcjach DML...................................................................................637 Obiekty typu BFILE................................................................................................................639 Katalogi.............................................................................................................................639 Otwieranie i zamykanie plików BFILE............................................................................641 Pliki BFILE w instrukcjach DML ....................................................................................641 Pakiet DBMS_LOB ................................................................................................................643 Podprogramy pakietu DBMS_LOB .................................................................................643 Wyjątki zgłaszane przez podprogramy z pakietu DBMS_LOB.......................................658 Porównanie interfejsów DBMS_LOB i OCI....................................................................658 PL/SQL w działaniu: Kopiowanie danych typu LONG do postaci LOB ...............................659 Podsumowanie ........................................................................................................................661 Rozdział 22. Wydajność i strojenie ..........................................................................663 Obszar wspólny.......................................................................................................................663 Struktura instancji bazy Oracle.........................................................................................663 Jak funkcjonuje obszar wspólny? .....................................................................................667 Rozmiar obszaru wspólnego.............................................................................................669 Unieruchamianie obiektów...............................................................................................670 Strojenie instrukcji SQL..........................................................................................................672 Generowanie planu wykonania.........................................................................................672 Wykorzystywanie planu ...................................................................................................678 Sieć..........................................................................................................................................679 Wykorzystywanie środowiska PL/SQL po stronie klienta...............................................679 Unikanie powtórnej analizy składni .................................................................................679 Przetwarzanie tablicowe ...................................................................................................680 Podsumowanie ........................................................................................................................680 Dodatek A Słowa zastrzeżone w PL/SQL ...............................................................681 Dodatek B Pakiety dostępne w PL/SQL ................................................................683 Tworzenie pakietów................................................................................................................683 Opis pakietów .........................................................................................................................683 DBMS_ALERT ................................................................................................................683 DBMS_APPLICATION_INFO .......................................................................................684 DBMS_AQ i DBMS_AQADM........................................................................................686 DBMS_DEFER, DBMS_DEFER_SYS i DBMS_DEFER_QUERY ..............................686 DBMS_DDL.....................................................................................................................686 DBMS_DESCRIBE..........................................................................................................687 DBMS_JOB......................................................................................................................688 DBMS_LOB .....................................................................................................................688 DBMS_LOCK ..................................................................................................................688 DBMS_OUTPUT .............................................................................................................693 DBMS_PIPE.....................................................................................................................693 DBMS_REFRESH i DBMS_SNAPSHOT ......................................................................693 DBMS_REPCAT, DBMS_REPCAT_AUTH i DBMS_REPCAT_ADMIN ..................693 DBMS_ROWID ...............................................................................................................693 DBMS_SESSION.............................................................................................................694 DBMS_SHARED_POOL.................................................................................................695 DBMS_SQL .....................................................................................................................696 DBMS_TRANSACTION.................................................................................................696 DBMS_UTILITY .............................................................................................................698 UTL_FILE ........................................................................................................................700
  • 12. Spis treści 15 Dodatek C Słownik wybranych elementów PL/SQL ................................................701 Dodatek D Słownik danych ...................................................................................721 Czym jest słownik danych?.....................................................................................................721 Standardy nazewnictwa ....................................................................................................721 Uprawnienia......................................................................................................................722 Perspektywy DBA, All i User w słowniku danych.................................................................722 Zale ności .........................................................................................................................723 Kolekcje............................................................................................................................724 Błędy kompilacji...............................................................................................................724 Katalogi.............................................................................................................................725 Zadania .............................................................................................................................725 Biblioteki ..........................................................................................................................726 Du e obiekty (LOB) .........................................................................................................726 Metody obiektów ..............................................................................................................727 Parametry metod obiektów ...............................................................................................727 Wartości zwracane przez metody obiektów .....................................................................728 Typy obiektowe ................................................................................................................729 Odwołania do obiektów....................................................................................................729 Atrybuty typów obiektowych ...........................................................................................729 Obiekty w schemacie........................................................................................................730 Kod źródłowy ...................................................................................................................730 Tabele ...............................................................................................................................731 Kolumny tabeli .................................................................................................................732 Wyzwalacze......................................................................................................................733 Kolumny wyzwalaczy ......................................................................................................734 Perspektywy......................................................................................................................734 Inne perspektywy słownika danych ........................................................................................735 dbms_alert_info ................................................................................................................735 dict_columns.....................................................................................................................735 Skorowidz ...........................................................................................737
  • 13. Rozdział 4. SQL w PL/SQL Strukturalny język zapytań (SQL) określa sposób manipulowania danymi w bazie danych Oracle. Konstrukcje proceduralne, które przedstawiono w rozdziale 2. i 3., stają się znacznie bardziej u yteczne w połączeniu z mocą przetwarzania języka SQL, poniewa wtedy konstrukcje te pozwalają programom PL/SQL na manipulowanie danymi w bazie danych Oracle. W niniejszym rozdziale zostaną omówione instrukcje SQL, które są dozwolone w języku PL/SQL i instrukcje sterowania transakcjami, które gwarantują utrzymanie spójności danych. W rozdziale 5. Czytelnik zapozna się z wbudowanymi funkcjami SQL. Instrukcje SQL Instrukcje SQL mo na podzielić na sześć kategorii, które wymieniono poni ej. W tabeli 4.1 znajduje się kilka przykładowych instrukcji. Szczegółowy opis wszystkich instrukcji SQL znajduje się w publikacji Server SQL Reference. Tabela 4.1. Kategorie instrukcji SQL Kategoria Przykładowe instrukcje SQL Instrukcje języka manipulowania danymi DML 5'.'%6, +05'46, 72&#6', &'.'6', 5'6 64#05#%6+10, (Data Manipulation Language) ':2.#+0 2.#0 Instrukcje języka definicji danych DDL &412, %4'#6', #.6'4, )4#06, 4'81-' (Data Definition Language) Instrukcje sterowania transakcją %1//+6, 41..$#%-, 5#8'21+06 Instrukcje sterowania sesji #.6'4 5'55+10, 5'6 41.' Instrukcje sterowania systemu #.6'4 5;56'/ Wbudowane polecenia SQL %100'%6, &'%.#4' %74514, #..1%#6'1 instrukcje języka manipulowania danymi DML (Data Manipulation Language) słu ą do zmieniania danych w tabelach lub danych zapytań w tabeli bazy danych, ale nie umo liwiają zmiany struktury tabeli lub innych obiektów; 1 Wbudowane polecenie SQL #..1%#6' jest dostępne w wydaniu Oracle 7.2 i wy szym.
  • 14. 98 Oracle8. Programowanie w języku PL/SQL instrukcje języka definicji danych DDL (Data Definition Language) słu ą do tworzenia, usuwania lub zmieniania struktury obiektu schematu. Polecenia, które zmieniają uprawnienia do obiektów schematu, są równie instrukcjami DDL; instrukcje sterowania transakcji gwarantują zachowanie spójności danych dzięki zorganizowaniu instrukcji SQL w logiczne transakcje, których wykonywanie jako jednostki kończy się powodzeniem lub niepowodzeniem; instrukcje sterowania sesji słu ą do zmieniania ustawień dla pojedynczego połączenia z bazą danych, np. do aktywacji śledzenia sesji SQL; instrukcje sterowania systemu słu ą do zmieniania ustawień dla całej bazy danych, np. do aktywowania lub dezaktywowania procesu archiwizacji; wbudowane polecenia SQL są wykorzystywane w programach prekompilatora Oracle. Wykorzystanie instrukcji SQL w języku PL/SQL Jedynymi instrukcjami SQL, które są dozwolone w programie PL/SQL, są instrukcje DML oraz instrukcje sterowania transakcji. W szczególności instrukcje DDL są niedozwolone. Tak e instrukcja ':2.#+0 2.#0, mimo e jest klasyfikowana jako instrukcja DML, jest niedozwolona. Aby to wyjaśnić, konieczna jest znajomość zało eń projektowych przy- jętych dla języka PL/SQL. Ogólnie język programowania mo e wiązać zmienne na dwa sposoby: przez wiązanie wczesne lub wiązanie późne. Wiązanie zmiennej jest procesem identyfikowania lokacji pamięci skojarzonej z identyfikatorem programu. W języku PL/SQL wiązanie uwzględ- nia równie sprawdzenie istnienia zezwolenia na uzyskanie dostępu do odwoływanego obiektu schematu w bazie danych. W przypadku języka, w którym stosuje się wiązanie wczesne, wiązanie zmiennej następuje podczas etapu kompilacji, natomiast w przypad- ku języka, w którym stosuje się wiązanie późne, proces wiązania zmiennej jest odkładany a do czasu uruchomienia programu. Uwzględnienie procesu wiązania wczesnego oznacza, e etap kompilacji będzie trwać dłu ej (poniewa musi być wykonane wiązanie zmiennych), ale sam program będzie wykonywany szybciej, poniewa wiązanie będzie ju zakończone. Wiązanie późne skraca czas kompilacji, ale wydłu a czas wykonywania programu. Język PL/SQL celowo zaprojektowano w taki sposób, aby zastosować wiązanie wczesne. Decyzję tę podjęto w celu zapewnienia jak najszybszego wykonywania bloku, poniewa wszystkie obiekty bazy danych są sprawdzane przez kompilator. Jest to sensowne rozwią- zanie, poniewa bloki PL/SQL mogą być składowane w bazie danych za pomocą procedur, funkcji, pakietów i wyzwalaczy. Obiekty te są składowane w skompilowanej formie, a zatem w razie potrzeby mogą być bezpośrednio ładowane z bazy danych do pamięci i uruchamiane. Więcej informacji na temat obiektów składowanych znajduje się w roz- działach 7., 8. oraz 9. Konsekwencją podjęcia takiej decyzji projektowej jest zakaz stoso- wania instrukcji DDL. Instrukcje DDL modyfikują obiekt bazy danych, w więc zachodzi konieczność ponownego sprawdzania zezwoleń. Sprawdzanie zezwoleń wymagałoby po- nownego wiązania identyfikatorów, a ten proces jest przeprowadzany podczas kompilacji. W tym punkcie warto rozwa yć następujący, hipotetyczny blok PL/SQL:
  • 15. Rozdział 4. SQL w PL/SQL 99 &'%.#4' %4'#6' 6#$.' VGORAVCDNG PWOAXCNWG 07/$'4 EJCTAXCNWG %*#4 +05'46 +061 VGORAVCDNG PWOAXCNWG EJCTAXCNWG 8#.7'5 *GNNQ '0 W celu kompilacji tego bloku identyfikator VGORAVCDNG wymaga dowiązania. Podczas tego procesu następuje sprawdzenie faktu istnienia tabeli. Jednak tabela nie mo e istnieć przed uruchomieniem bloku. Z powy szego wynika, e omawiany blok nie mo e zostać skom- pilowany, a zatem nie ma sposobu na uruchomienie go. Instrukcje sterowania transakcji są jedynymi instrukcjami SQL, które nie mają mo liwości modyfikowania obiektów schematu lub uprawnień do obiektów schematu i w ten sposób są jedynymi poprawnymi instrukcjami SQL, stosowanymi w języku PL/SQL. Stosowanie instrukcji DDL Istnieje alternatywne rozwiązanie problemu przedstawionego w poprzednim pod- rozdziale. Od wydania PL/SQL 2.1 jest dostępny wbudowany pakiet $/5A53.. Jest to pakiet, który umo liwia dynamiczne tworzenie instrukcji SQL podczas 1 tworzona a do czasu uruchomienia programu, a więc kompilator PL/SQL nie musi wiązać identyfi- katorów w instrukcji, co pozwala na kompilowanie bloku. Pakiet $/5A53. jest szczegółowo opisany w rozdziale 15. Przykładowo, do wykonania instrukcji %4'#6' 6#$.' z poprzed- niego bloku mo na u yć pakietu $/5A53.. Jednak nawet wtedy kompilacja instrukcji +05'46 nie powiedzie się, poniewa tabela nie istnieje ć przed uruchomieniem bloku. Rozwiązaniem tego problemu jest zastosowanie pakietu $/5A53. równie do wykony- wania instrukcji +05'46. Stosowanie instrukcji DML w języku PL/SQL Dozwolonymi instrukcjami DML w języku PL/SQL są instrukcje: 5'.'%6, +05'46, 72#6' oraz '.'6'. Instrukcje te działają w następujący sposób: instrukcja 5'.'%6 zwraca te wiersze z tabeli bazy danych, które odpowiadają kryteriom podanym w jej klauzuli 9*'4', instrukcja +05'46 dodaje wiersze do tabeli bazy danych, instrukcja 72#6' modyfikuje te wiersze w tabeli bazy danych, które odpowiadają klauzuli 9*'4', natomiast instrukcja '.'6' usuwa wiersze identyfikowane przez klauzulę 9*'4'. Poza klauzulą 9*'4' powy sze instruk- cje mogą uwzględniać tak e inne klauzule. Klauzule te opisano w kolejnych podrozdziałach niniejszego rozdziału. Podczas wykonywania instrukcji SQL w programie SQL*Plus wyniki tego wykonania są wyświetlane na ekranie. Przykładowy sposób takiego wyświetlania przedstawiono na rysunku 4.1. W przypadku wykonywania instrukcji 72#6', +05'46 lub '.'6' SQL*Plus zwraca liczbę przetwarzanych wierszy. W razie wykonywania instrukcji 5'.'%6 wiersze, które odpowiadają zapytaniu, są wyświetlane na ekranie.
  • 16. 100 Oracle8. Programowanie w języku PL/SQL Rysunek 4.1. Wyniki wykonania instrukcji SQL w programie SQL*Plus Nale y zwrócić uwagę na sposób zastosowania instrukcji 72#6'. Wyniki wykonania tej instrukcji pokazano na rysunku 4.1. 72#6' %.#55'5 5'6 PWOAETGFKVU 9*'4' FGRCTVOGPV *+5 #0 EQWTUG Wszystkie wartości, które są wykorzystane w celu zmiany zawartości tabeli ENCUUGU, są ustalone — są znane podczas tworzenia instrukcji. Język PL/SQL usuwa to ogranicze- nie za pomocą zmiennych. Stosowanie zmiennych jest dozwolone wszędzie tam, gdzie w instrukcji SQL jest dozwolone stosowanie wyra eń. Jeśli zmienne są u ywane w opi- sywany sposób, są nazywane zmiennymi dowiązanymi. Przykładowo, w poprzedniej in- strukcji 72#6' mo na zastąpić wartość ustaloną liczby zaliczeń (PWOAETGFKVU) zmienną dowiązaną: Dostępne na płycie CD w skrypcie bindvar.sql '%.#4' XA0WO%TGFKVU ENCUUGUPWOAETGFKVU 6;2' $')+0
  • 17. 2T[RKU YCTVQUE OKGPPGL XA0WO%TGFKVU
  • 18. XA0WO%TGFKVU 72#6' %.#55'5 5'6 PWOAETGFKVU XA0WO%TGFKVU 9*'4' FGRCTVOGPV *+5 #0 EQWTUG '0
  • 19. Rozdział 4. SQL w PL/SQL 101 Nie wszystkie elementy w instrukcji SQL mogą być zastępowane zmiennymi — zastępować mo na tylko wyra enia. W szczególności muszą być znane nazwy tabel i kolumn. Jest to wymagane ze względu na wiązanie wczesne — nazwy obiektów Oracle muszą być znane w czasie kompilacji. Z definicji wartość zmiennej nie jest znana a do czasu uru- chomienia programu. W celu przezwycię enia tego ograniczenia mo na równie wyko- rzystywać pakiet $/5A53.. Instrukcja SELECT Instrukcja SELECT pobiera dane z bazy danych do zmiennych PL/SQL. Poni ej przedsta- wiono składnię instrukcji SELECT: W poni szej tabeli opisano wszystkie elementy. Tabela 4.2. Klauzule wyboru instrukcji SELECT Klauzula wyboru Opis GNGOGPVANKUV[AY[DQTW Kolumna (lub wyra enie) do wybrania. Ka dy element listy wyboru jest oddzielony przecinkiem i mo e być opcjonalnie identyfikowany przez alias (zamiennik). Cały zbiór elementów listy w instrukcji 5'.'%6 nazywa się listą wyboru. Znak
  • 20. w składni jest skrótem zastępującym cały wiersz. W ten sposób są zwracane poszczególne pola w tabeli w kolejności, w jakiej zdefiniowano pola. OKGPPC Zmienna PL/SQL, do której będzie przekazany element listy wyboru. Ka da zmienna powinna być kompatybilna ze swoim skojarzonym elementem listy wyboru. Dlatego elementy listy oraz zmienne wyjściowe powinny istnieć w tej samej liczbie. TGMQTFA2.53. Mo e być stosowany zamiast listy zmiennych. Rekord powinien zawierać pola, które odpowiadają elementom z listy wyboru, ale równie pozwalają na łatwiejszą manipulację zwracanymi danymi. Rekordy łączą powiązane pola w jednej jednostce składniowej. W ten sposób mo na manipulować tymi polami zarówno jako grupą, jak równie indywidualnie. Zagadnienia dotyczące rekordów opisano w dalszej części niniejszego rozdziału. Je eli listą wyboru jest znak
  • 21. , wtedy ten rekord mo e być zdefiniowany jako QFYQNCPKGAVCDGNK 4196;2'. QFYQNCPKGAVCDGNK Identyfikuje tabelę, z której mają być pobrane dane. Mo e być synonimem lub tabelą w odległej bazie danych, określonej przez powiązanie z bazą danych. Więcej informacji na temat odwołań tabel znajduje się w dalszej części niniejszego rozdziału. MNCWWNCAYJGTG Kryterium dla tego zapytania. Klauzula ta identyfikuje wiersz, który będzie zwrócony przez zapytanie. Kryterium składa się z warunków logicznych (boole’owskich) łączonych operatorami logicznymi. Zagadnienia związane z kryteriami wyboru opisano bardziej szczegółowo w dalszej części niniejszego rozdziału.
  • 22. 102 Oracle8. Programowanie w języku PL/SQL Ogólnie więcej klauzul jest dostępnych dla instrukcji 5'.'%6. Przykładowo, zaliczają się do nich klauzule 14'4' $; oraz )4172 $;. Szczegółowo omówiono je w rozdziale 6. Więcej informacji na ich temat znajduje się w publikacji Server SQL Reference. Instrukcja 5'.'%6 według podanej powy ej składni powinna zwracać najwy ej jeden wiersz. Klauzula 9*'4' jest sprawdzana dla ka dego wiersza w tabeli. Je eli odpowiada ona więcej ni jednemu wierszowi, PLSQL zwraca następujący komunikat o błędzie: 14# 5KPINGTQY SWGT[ TGVWTPU OQTG VJCP QPG TQY CR[VCPKG Q LGFGP YKGTU YTCEC YKGEGL PK LGFGP YKGTU W takim przypadku do pobrania ka dego wiersza osobno konieczne jest zastosowanie kursora. Więcej informacji na ten temat znajduje się w rozdziale 6. W poni szym przykładzie przedstawiono sposób zastosowania dwóch ró nych instrukcji 5'.'%6: Dostępne na płycie CD w skrypcie select.sql '%.#4' XA5VWFGPV4GEQTF UVWFGPVU 4196;2' XAGRCTVOGPV ENCUUGUFGRCTVOGPV 6;2' XA%QWTUG ENCUUGUEQWTUG 6;2' $')+0 2QDKGT LGFGP TGMQTF VCDGNK UVWFGPVU K CEJQYCL Y TGMQTFKG XA5VWFGPV4GEQTF 0CNG[ YTQEKE WYCIG G MNCWWNC 9*'4' QFRQYKCFC V[NMQ LGFPGOW YKGTUQYK VCDGNK 0CNG[ TQYPKG YTQEKE WYCIG G CR[VCPKG YTCEC YU[UVMKG RQNC Y VCDGNK UVWFGPVU RQPKGYC UVQUQYCP[ LGUV PCM
  • 23. 9 VGP URQUQD NCFQYCP[ TGMQTF LGUV FGHKPKQYCP[ LCMQ UVWFGPVU 4196;2' 5'.'%6
  • 24. +061 XA5VWFGPV4GEQTF (41/ UVWFGPVU 9*'4' KF 2QDKGT FYC RQNC VCDGNK ENCUUGU K CEJQYCL LG Y OKGPP[EJ XAGRCTVOGPV QTC XA%QWTUG PQYW CVGO MNCWWNC 9*'4' QFRQYKCFC V[NMQ LGFPGOW YKGTUQYK VCDGNK 5'.'%6 FGRCTVOGPV EQWTUG +061 XAGRCTVOGPV XA%QWTUG (41/ ENCUUGU 9*'4' TQQOAKF '0 Instrukcja INSERT Składnię instrukcji +05'46 przedstawiono poni ej. Nale y zwrócić uwagę, e bezpośrednio w instrukcji nie występuje klauzula WHERE (chocia mo e ona występować w podza- pytaniu). Klauzula QFYQNCPKGAVCDGNK odwołuje się do tabeli Oracle, PCYCAMQNWOP[ odwołuje się do kolumny w tej tabeli, a Y[TCGPKG jest wyra eniem SQL lub PL/SQL, co zdefiniowano w poprzednim rozdziale. Odwołania do tabel omówiono bardziej szczegółowo w dalszej
  • 25. Rozdział 4. SQL w PL/SQL 103 części niniejszego rozdziału. Je eli instrukcja +05'46 zawiera KPUVTWMELCAUGNGEV, wtedy elementy listy instrukcji UGNGEV powinny odpowiadać kolumnom, do których mają być wstawiane dane. Prawidłowe zastosowanie kilku instrukcji +05'46 przedstawiono w poni szym przykładzie: Dostępne na płycie CD w skrypcie insert.sql '%.#4' XA5VWFGPV+ UVWFGPVUKF 6;2' $')+0 2QDKGT PQY[ KFGPV[HKMCVQT + UVWFGPVC 5'.'%6 UVWFGPVAUGSWGPEG0':68#. +061 XA5VWFGPV+ (41/ FWCN QFCL YKGTU FQ VCDGNK UVWFGPVU +05'46 +061 UVWFGPVU KF HKTUVAPCOG NCUVAPCOG 8#.7'5 XA5VWFGPV+ 6KOQVJ[ 6CNNGT QFCL FTWIK YKGTU CNG W[L PWOGTW UGMYGPELK DGRQUTGFPKQ Y KPUVTWMELK +05'46 +05'46 +061 UVWFGPVU KF HKTUVAPCOG NCUVAPCOG 8#.7'5 UVWFGPVAUGSWGPEG0':68#. 2CVTKEM 2QNN '0 W następnym przykładzie przedstawiono nieprawidłowy sposób wykonania polecenia +05'46. Elementy listy instrukcji 5'.'%6 podzapytania nie odpowiadają kolumnom, które mają być wstawiane. Taka instrukcja powoduje zwrócenie błędu Oracle ORA-913: too many values. +05'46 +061 TQQOU 5'.'%6
  • 26. (41/ ENCUUGU Kolejny przykład przedstawia prawidłowo wydaną instrukcję +05'46. Przez wstawienie kopii ka dego wiersza następuje podwojenie wielkości tabeli ENCUUGU. +05'46 +061 ENCUUGU 5'.'%6
  • 27. (41/ ENCUUGU Wersja Oracle8 z opcją obiektów dostarcza dodatkową klauzulę dla instrukcji +05'46 — klauzuli 4'( +061. W razie zastosowania tej klauzuli z tabelami obiektów jest zwracane odwołanie do wstawianego obiektu. Więcej informacji na ten temat znajduje się w roz- dziale 11.
  • 28. 104 Oracle8. Programowanie w języku PL/SQL Instrukcja UPDATE Poni ej przedstawiono składnię instrukcji 72#6': Klauzula QFYQNCPKGAVCDGNK odwołuje się do modyfikowanej tabeli, PCYCAMQNWOP[ jest nazwą kolumny, której wartość ma być zmieniona, a Y[TCGPKG jest wyra eniem SQL, co zdefiniowano w rozdziale 2. Je eli instrukcja 72#6' zawiera KPUVTWMELCA5'.'%6, elementy listy wyboru powinny odpowiadać kolumnom w klauzuli 5'6. W poni szym przykładzie pokazano zastosowanie instrukcji 72#6': Dostępne na płycie CD w skrypcie update.sql '%.#4' XA/CLQT UVWFGPVUOCLQT 6;2' XA%TGFKV+PETGCUG 07/$'4 $')+0 6C KPUVTWMELC 72#6' FQFC FQ RQNC EWTTGPVAETGFKVU FNC YU[UVMKEJ UVWFGPVQY MVQT[ UVWFKWLC *KUVQTKG XA/CLQT *KUVQT[ 72#6' UVWFGPVU 5'6 EWTTGPVAETGFKVU EWTTGPVAETGFKVU XA%TGFKV+PETGCUG 9*'4' OCLQT XA/CLQT '0 Instrukcja DELETE Instrukcja '.'6' usuwa wiersze z tabeli bazy danych. Klauzula 9*'4' wskazuje, które wiersze mają być usunięte. Poni ej podana jest składnia instrukcji '.'6':