plsql.pdf

(580 KB) Pobierz
Microsoft Word - plsql.doc
!
"#%#
##"&’’%
1.
UWAGI WST PNE....................................................................................................3
2.
BLOKI ANONIMOWE ...............................................................................................3
2.1. Składnia ................................................................................................................................................................ 3
2.2. Przykłady .............................................................................................................................................................. 4
2.3. Najprostsze programy ......................................................................................................................................... 5
2.4. Uruchamianie ....................................................................................................................................................... 6
3.
INSTRUKCJE WARUNKOWE, INSTRUKCJA SKOKU I P TLE.............................8
3.1. IF – THEN – ELSE .............................................................................................................................................. 8
3.2. LOOP .................................................................................................................................................................... 8
3.3. FOR – LOOP ........................................................................................................................................................ 9
3.4. WHILE – LOOP .................................................................................................................................................. 9
3.5. GO TO................................................................................................................................................................... 9
4.
KURSORY...............................................................................................................10
4.1. Składnia .............................................................................................................................................................. 10
4.2. Kursory niejawne ............................................................................................................................................... 10
4.3. Kursory jawne .................................................................................................................................................... 12
4.4. Kursory z parametrami ..................................................................................................................................... 14
5.
OBSŁUGA WYJ TKÓW ........................................................................................15
5.1. Przykłady ............................................................................................................................................................ 15
5.2. Funkcje SQLCODE i SQLERRM .................................................................................................................... 17
5.3. Procedura RAISE_APPLICATION_ERROR ................................................................................................ 19
5.4. Zestawienie predefiniowanych wyj tków systemowych ................................................................................. 20
6.
PROCEDURY I FUNKCJE ......................................................................................22
6.1. Składnia .............................................................................................................................................................. 22
6.2. Najprostsza procedura....................................................................................................................................... 23
6.3. Parametry procedur........................................................................................................................................... 24
6.4. Typy zmiennych IN, OUT oraz IN OUT .......................................................................................................... 25
6.5. Inne przykłady procedur ................................................................................................................................... 27
6.6. Przykłady funkcji ............................................................................................................................................... 29
7.
WYKORZYSTANIE PAKIETÓW W CELU ORGANIZACJI KODU.........................30
7.1. Składnia .............................................................................................................................................................. 30
przedmiot: Bazy danych, jzyk PL/SQL
opracował: dr in. Artur Gramacki
1
317326255.008.png 317326255.009.png 317326255.010.png 317326255.011.png 317326255.001.png
7.2. Przykłady ............................................................................................................................................................ 30
7.3. Kompilowanie i usuwanie procedur, funkcji i pakietów................................................................................. 33
7.4. Gdzie ORACLE przechowuje ródła PL/SQL ................................................................................................ 34
8. KOLEKCJE .............................................................................................................35
8.1. Wst p................................................................................................................................................................... 35
8.2. Przykłady ............................................................................................................................................................ 35
9. DYNAMICZNY SQL ................................................................................................41
9.1. Instrukcja EXECUTE IMMEDIATE .............................................................................................................. 41
9.2. Zmienne kursorowe ........................................................................................................................................... 43
9.3. Pewien bardziej zło ony przykład u ycia zmiennych kursorowych .............................................................. 45
9.4. Dynamiczny SQL z wykorzystaniem pakietu DBMS_SQL............................................................................ 47
10. WYZWALACZE BAZODANOWE ...........................................................................47
10.1. Składnia (uproszczona).................................................................................................................................... 47
10.2. Mo liwe typy wyzwalaczy................................................................................................................................ 47
10.3. Przykłady .......................................................................................................................................................... 48
10.4. Wł czanie, wył czanie i kasowanie, kompilowanie wyzwalaczy.................................................................. 49
10.5. Wy wietlanie informacji na temat wyzwalaczy ............................................................................................. 49
10.6. Mutuj ce tablice (ang. mutating tables ) .......................................................................................................... 50
10.7. Przykład z jedn tabel ................................................................................................................................... 51
10.8. Bardziej zło ony przykład z tabelami mutuj cymi ....................................................................................... 52
11. MODEL SUMMIT2...................................................................................................56
11.1. Omówienie ........................................................................................................................................................ 56
11.2. Skrypt................................................................................................................................................................ 62
przedmiot: Bazy danych, jzyk PL/SQL
opracował: dr in. Artur Gramacki
2
#$ (")"*
Opracowanie omawia podstawowe elementy j zyka PL/SQL na bazie systemu ORACLE. W
zamierzeniu autora ma ono stanowi materiał pomocniczy do prowadzenia wykładu oraz wicze
laboratoryjnych z przedmiotu Bazy danych. Opracowanie mo e by materiałem do samodzielnego
studiowania, jednak nale y mie wiadomo , e brak jest w nim bardziej systematycznego
omówienia j zyka PL/SQL. J zyk ten omówiono posługuj c si du liczb przykładów,
ograniczaj c natomiast do minimum komentarz słowny. Starano si przedstawi jedynie jego
najwa niejsze elementy, najbardziej przydatne w praktyce. Wiele pomniejszych kwestii jest
pomini tych lub omówionych tylko pobie nie.
Wszystkie przykłady testowane były w systemie ORACLE, w wersji 8.1.7, jednak powinny bez
adnych zmian działa równie w innych wersjach – zarówno wcze niejszych jak i pó niejszych.
Szczegółowy opis wszystkich polece j zyka PL/SQL w systemie ORACLE mo na znale w
dokumentacji: PL/SQL User’s Guide and Reference.
Zdecydowania wi kszo przykładów operuje na demonstracyjnym modelu o nazwie SUMMIT2,
który jest standardowo instalowany w systemie ORACLE, wersja 8.x. Dlatego te nale y upewni
si , e skrypt summit2.sql wykonał si bezbł dnie. Krótkie omówienie modelu SUMMIT2
zamieszczono na ko cu niniejszego opracowania.
Wszystkie przykłady pokazane w opracowaniu zostały wykonane w programie SQL*Plus. Poni ej
pokazano wygl d ekranu po prawidłowy uruchomieniu programu oraz po prawidłowym poł czeniu
si z jego pomoc do systemu ORACLE.
W zale no ci od konfiguracji systemu napisy mog by w j zyku innym ni polski – domy lnie jest
to oczywi cie j zyk angielski.
SQL*Plus: Release 8.1.7.0.0 - Production on Wto Mar 23 08:14:21 2004
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Podaj nazw u ytkownika: summit2
Podaj hasło:
Poł czony z:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
&$ +"
[DECLARE
sekcja deklaracji]
BEGIN
sekcja instrukcji
[EXCEPTION
sekcja obsługi wyj tków]
END;
przedmiot: Bazy danych, jzyk PL/SQL
opracował: dr in. Artur Gramacki
3
317326255.002.png 317326255.003.png
Bloki zagnie d one (ang. nested blocks ).
[DECLARE
sekcja deklaracji]
BEGIN
sekcja instrukcji
[BEGIN
...sekcja instrukcji
[EXCEPTION
...sekcja obsługi wyj tków]
END;]
[EXCEPTION
...sekcja obsługi wyj tków]
EBD;
Sekcja DECLARE – składnia.
DECLARE
nazwa_zmiennej typ_zmiennej[długo ]
[CONSTANT]
[:= | DEFAULT warto _domy lna]
[NOT NULL];
Przykład 1
Deklarowanie zmiennych i stałych – przykłady.
-- Identyfikatory NIE MOG zaczyna si od litery i by
-- dłu sze ni 30 znaków. Identyfikatory nie mog brzmie
-- tak samo jak słowa zarezerwowane (np. DATE, BEGIN)
-- Zmienna zadeklarowana, lecz nie zainicjowana posiada warto NULL.
-- Poni sze trzy deklaracje s równowa ne.
licznik NUMBER(4);
licznik NUMBER(4) := NULL;
licznik NUMBER(4) DEFAULT NULL;
-- Nadanie warto ci zmiennym przez przypisanie.
ilosc NUMBER(2) := 50;
-- Mo na te tak:
ilosc_2 NUMBER(2) DEFAULT 100;
-- Literały (w tym daty) ujmujemy w apostrofy.
imie VARCHAR2(25) DEFAULT 'Artur';
czy_instalowac CHAR(3) := 'TAK';
data_domyslna DATE := '01-01-2000';
-- Warto domy lna
-- SYSDATE zwraca bie c dat oraz czas systemowy
-- z dokładno ci do jednej sekundy
data_zatr DATE DEFAULT SYSDATE NOT NULL;
-- Typ logiczny. Uwaga: j zyk SQL nie posiada takiego typu.
flaga BOOLEAN := FALSE;
-- Stałe
-- Poni ej zadeklarowanych stałych NIE MO NA zmienia w programie.
przedmiot: Bazy danych, jzyk PL/SQL
opracował: dr in. Artur Gramacki
4
317326255.004.png 317326255.005.png
-- Jest to wygodny sposób na unikanie prostych bł dów.
grudzien CONSTANT NUMBER(2) := 31;
uczelnia CONSTANT VARCHAR2(100) := 'Uniwersytet Zielonogórski';
drobinka CONSTANT NUMBER := 0.000001;
Typy danych.
Uwaga: typy danych w PL/SQL nie odpowiadaj dokładnie analogicznym typom w SQL.
-----------------------------------------------------------------------------
NUMBER -- nazwa_zmiennej NUMBER [ ( precyzja [ ,skala ] ) ]
-- przykłady: NUMBER, NUMBER(10), NUMBER(10,3)
INTEGER -- Warto ci całkowite, do 38 cyfr.
PLS_INTEGER -- Wydajniejsza ni INTEGER i NUMBER,
-- od –2.147.483.647 do 2.147.483.647
-----------------------------------------------------------------------------
VARCHAR2 -- Przechowuje ci gi o zmiennej długo ci od 1 do 32767 bajtów.
-- Uwaga: w tabelach ten typ mo e mie maksymalnie 4000 bajtów.
-- Przechowywanie dłu szych ci gów wymaga typu CLOB.
VARCHAR -- Nie zaleca si stosowa . U ywa raczej VARCHAR2.
CHAR -- Typ o stałej długo ci. Niedobór uzupełniany spacjami.
-----------------------------------------------------------------------------
DATE -- Data i godzina, dokładno do 1 sek.
-----------------------------------------------------------------------------
BOOLEAN -- Mo e przyjmowa warto TRUE, FALSE, NULL.
-----------------------------------------------------------------------------
RECORD
TABLE
VARRAY
-----------------------------------------------------------------------------
REF CURSOR
-----------------------------------------------------------------------------
BFILE
BLOB
CLOB
NCLOB
Przykład 2
Program "nic-nie-robi cy".
BEGIN
null;
END;
Przykład 3
Program "Hello, world".
BEGIN
-- To jest komentarz.
DBMS_OUTPUT.PUT_LINE(‘Hello, world’);
/*
To te jest komentarz. Jest on bardziej
przydatny, gdy trzeba skomentowa
wiele linii tekstu.
*/
END;
przedmiot: Bazy danych, jzyk PL/SQL
opracował: dr in. Artur Gramacki
5
317326255.006.png 317326255.007.png
Zgłoś jeśli naruszono regulamin