plsql













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 whylearnit
plsql
cheatsheet plsql
cheatsheet plsql
PLSQL Rez vip
plsql
Oracle PLSQL Pakiety i Funkcje Leksykon Kieszonkowy
bd2 PLSQL strony WWW
Ćwiczenie 11 Język PLSQL wprowadzenie
zaliczenie plsql 06

więcej podobnych podstron