PL/SQL w ORACLE'u
Strona główna
Wstęp
Nauka
Programy
Rozrywka
Pomoc
Księga gości
Kontakt
PL/SQL ORACLE'a
Indeks
Ogólna postać programu
Procedury
Procedury - wywoływanie
Procedury - usuwanie
Funkcje
Ograniczenia
Typy zmiennych, stałe
Instrukcje sterujące
Stosowanie kursorów
Stosowanie wyjątków
Stosowanie wyzwalaczy(triggerów)
Powiązane tematy:
Wstęp, struktura logiczna bazy ORACLE
PL/SQL
SQL - ściąga
Ogólna postać programu
Poprawnie zbudowany program w PL/SQL składa się z dwóch rozłącznych części:
deklarującej i wykonującej.
Część deklarująca zawiera przede wszystkim deklaracje typów, kursorów, stałych, zmiennych i podprogramów zagnieżdżonych. Podprogramy wraz ze swoimi kodami źródłowymi umieszczane muszą być na końcu części deklaracyjne). Poza tym kolejność innych elementów części deklaracyjnej jest dowolna.
Podprogramy mogą ponadto być umieszczane w bazie, jako jej niezależne obiekty. Dowiązanie to można przeprowadzić używając poleceń CREATE FUNCTION i CREATE PROCEDURE, należących do języka SQL.
Ogólna postać programu:
[DECLARE
deklaracje na poziomie programu ]
BEGIN
instrukcje wykonywalne
[EXCEPTION
obsługa sytuacji wyjątkowych ]
END [literał];
Powrót do indeksu
Procedury
Wśród deklaracji na poziomie programu mogą być procedury i / lub funkcje.
Składnia deklaracji procedury jest następująca:
PROCEDURE nazwa [ ( parametr [,parametr,...]) ] IS
[ deklaracje lokalne ]
BEGIN
instrukcje wykonywalne
[ EXCEPTION
obsługa sytuacji wyjątkowych ]
END [ nazwa ];
Powrót do indeksu
Procedury - usuwanie
Usuwanie funkcji i procedury wygląda następująco:
DROP FUNCTION nazwa i DROP PROCEDURE nazwa.
Powrót do indeksu
Funkcje
Deklaracja funkcji wygląda następująco:
FUNCTION nazwa [ (parametr [,parametr,...]) ] RETURN typ IS
Każdy element z listy parametrów formalnych w nagłówku podprogramu ma następującą postać:
nazwa_zmiennej [ IN | OUT | IN OUT ] typ [{:= | DEFAULT } wartość ]
Przykład funkcji:
Deklaracja:
FUNCTION druga (n NATURAL) RETURN BOOLEAN ;
Definicja:
FUNCTION pierwsza (n NATURAL) RETURN BOOLEAN IS BEGIN
BEGIN
PROMPT n;
RETURN druga (n-1);
END ;
Powrót do indeksu
Procedury - wywoływanie
Wywołanie procedury może się odbywać w programie na dwa sposoby - np. procedura:
PROCEDURE p1 (x INTEGER, y REAL ) IS
może być poprawnie wywołana za pomocą następujących instrukcji:
p1(a,b), - styl pozycyjny
p1(x=>a, y=>b), - styl związany
p1(y=>b, x=>a). - styl związany
Powrót do indeksu
Ograniczenia
Każdy podprogram, podobnie jak program podstawowy, może zawierać deklaracje następnych podprogramów. Zmienne zadeklarowane na poziomie (pod)programu dostępne są we wszystkich zade-klarowanych w nim podprogramach.
Uwaga! Z używaniem funkcji własnych w języku PL/SQL związane jest jedno ograniczenie. Nie mogą one pojawiać się w poleceniach SQL'owych. To znaczy, że następujące polecenie:
INSERT INTO zbiór VALUES (Funkcja(x));
jest niepoprawne, o ile Funkcja symbolizuje funkcję własną użytkownika.
Inne ograniczenie związane jest z typem wartości parametrów formalnych zarówno dla procedur, jak i dla funkcji. Muszą to być tzw. typy nieograniczone (nieokrojone). Poprawny jest więc w tym przypadku typ CHAR, a niepoprawny typ CHAR(20). Analogiczna uwaga dotyczy typów wartości wyrażeń zwracanych przez funkcje.
SELECT liczba FROM tablica WHERE liczba>silnia(4);
wygeneruje błąd! Należy wykonać np.:
x:=silnia(4);
SELECT liczba FROM tablica WHERE liczba>x;
Powrót do indeksu
Typy zmiennych, stałe
Typy zmiennych:
Typ
Opis
VARCHAR2(rozmiar)
Ciąg znaków o zmiennej długości. Maksymalna długośc : 4000 znaków , minimalna - 1 znak. Specyfikacja maksymalnej długości jest niezbędna.
NVARCHAR2(rozmiar)
Ciąg znaków o zmiennej długości. Maksymalna długośc jest reprezentowana przez ilośc bajtów niezbędną do reprezentacji pojedynczego znaku.Maksymalna długośc : 4000 znaków. Specyfikacja maksymalnej długości jest niezbędna.
NUMBER(p,s)
Liczba mająca p miejsc calkowitych i s miejsc po przecinku
LONG
Ciąg znaków o zmiennej długości. Maksymalna długośc 2 GB
DATE
Data od 1 stycznia 4712 p.n.e do 31 grudnia 9999 n.e
RAW(rozmiar)
Czyste dane o dlugości równej ilości bajtów. Maksymalna długośc: 4000 bajtów
LONG RAW
Czyste dane o dlugości równej ilości bajtów. Maksymalna długośc: 2 GB
ROWID
Szestnastkowy ciag reprezentujący logiczny adres krotki zorganizowanej w indeks. Minimalny rozmiar - 1 bajt.
UROWID
Szestnastkowy ciag reprezentujący logiczny adres krotki zorganizowanej w indeks. Maksymalny (i defaultowy) rozmiar - 4000 bajtów.
CHAR(rozmiar)
Ciąg o stałej długości. Maksymalny rozmiar - 2000 bajtów. Standardowy - 1 bajt.
NCHAR(rozmiar)
Ciąg o stałej długości. Maksymalny rozmiar określony ilością bajtów na znak - 2000 bajtów. Standardowy - 1 bajt.
CLOB
Obiekt zawierający duże ilości tekstu (do 4 GB) gdzie jeden znak jest reprezentowany przez jeden bajt.
NCLOB
Obiekt zawierający duże ilości tekstu (do 4 GB) gdzie jeden znak jest reprezentowany przez kilka bajtów.
BLOB
Duży binarny plik o maksymalnym rozmiarze 4 GB.
BFILE
Zawiera lokację binarnego pliku przechowywanego na zewnątrz bazy danych.Maksymalny rozmiar 4 GB
Składnia deklaracji zmiennych:
zmienna TYP [([NOT NULL] := wartość_początkowa ];
Przykłady:
x1 INTEGER(4,2) := 23.45 ;
x2 REAL NOT NULL := 1 ;
x3 VARCHAR2 NOT NULL ;1 THEN x:= 1 ;
ELSIF y >2 THEN x := 2;
ELSIF y >3 THEN x := 3;
ELSE x:=99;
ENDIF;
END;
Pętla:
Przykład:
DECLARE
wynik INTEGER := O ;
licznik SMALLINT := 1 ;
BEGIN
LOOP
wynik := wynik + POWER(licznik,2);
licznik := licznik+1 ;
IF licznik > 100 THEN EXIT ;
END IF ;
END LOOP;
END;
Pętla ograniczona jest dyrektywami LOOP i END LOOP. Wewnątrz pętli (i tylko tam) dopuszczalna jest dyrektywa EXIT, która przenosi wykonanie za dolne ograni-czenie pętli.
Dyrektywa EXIT może być rozszerzona o klauzulę WHEN warunek_logiczny. Przerwanie wykonania pętli nastąpi wtedy, gdy, że warunek_logiczny będzie spełniony np.:
EXIT WHEN licznik > 100;
Dodatkowo przy instrukcjach pętli możliwe jest stosowanie etykiet co umożliwia dokładniejsze sterowanie przebiegiem pętli :
LOOP
................
LOOP
......................
EXIT etykieta [ WHEN warunek ]
END LOOP ;
END LOOP etykieta ;
Przed górnym ograniczeniem pętli można umieścić dyrektywę:
WHILE warunek logiczny. Wtedy przed każdym obrotem pętli warunek będzie sprawdzany. Obrót będzie wykonany pod warunkiem jego spełnienia. Pętlę wyliczającą sumę kwadratów można również napisać w następujący sposób:
WHILE licznik = 1 THEN
UPDATE dept d
SET manager_num = :n.empno
WHERE d.deptno = :n.deptno;
END IF;
END;
/
Powrót do indeksu
Strona główna
|
Wstęp
|
Nauka
|
Programy
|
Rozrywka
|
Pomoc
© 2000 Piotr Różnicki.
Wyszukiwarka
Podobne podstrony:
les08 plsql whylearnitplsqlcheatsheet plsqlcheatsheet plsqlPLSQL Rez vipplsqlOracle PLSQL Pakiety i Funkcje Leksykon Kieszonkowybd2 PLSQL strony WWWĆwiczenie 11 Język PLSQL wprowadzeniezaliczenie plsql 06więcej podobnych podstron