Oracle8 Programowanie w jezyku PL SQL.pdf

(415 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Oracle8.
Programowanie
w jêzyku PL/SQL
Autor: Scott Urman
T³umaczenie: Tomasz Pêdziwiatr, Grzegorz Stawikowski,
Cezary Welsyng
ISBN: 83-7197-533-3
Tytu³ orygina³u:
Oracle8 PL/SQL Programming
Format: B5, stron: 762
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
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.
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
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.
W ksi¹¿ce omówiono miêdzy innymi:
• Podstawy jêzyka PL/SQL: struktura programu, zmienne, typy, wyra¿enia
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
Ksi¹¿ka jest przeznaczona zarówno dla do wiadczonych programistów, jak i tych,
którzy jeszcze nie poznali innych jêzyków trzeciej generacji. Przydatna, choæ
niekonieczna, jest ogólna znajomo æ systemu Oracle (³¹czenie siê i korzystanie z bazy
danych, podstawy jêzyka SQL, itp.).
TWÓJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
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
Zgłoś jeśli naruszono regulamin