Kursory jawne, procedury, funkcje

Transkrypt

Kursory jawne, procedury, funkcje
Studia dzienne
Systemy przetwarzania i baz danych II
Pracownia specjalistyczna nr 4
Temat: Kursory jawne, procedury, funkcje
Zad 1 Stworzy blok PL/SQL zwi kszaj cy cen ksi ki o 5% zaczynaj c od ksi ek najta szych i
zgodnie z kolejno ci alfabetyczn tytułów (operujemy na tabeli ksi zka_tmp, b d cej kopi tabeli
t_ksiazka)
Przykład
id_ksiazki
tytul
cena
1
A
10
2
B
28
3
C
10
4
D
30
Kolejno sprawdzania cen (id_ksiazki): 1, 3, 2, 4
Je li suma cen wszystkich ksi ek po podwy ce przekroczy 135, ko czymy zwi kszanie cen ksi ek.
Zad 2 Stworzy blok PL/SQL, który sprawdzi tytuł najdro szej i najta szej ksi ki. Informacje o
tytułach i cenach powinny znale si w tabeli Komunikat (zadanie powinno zosta rozwi zane przy
u yciu kursorów jawnych).
Zad 3 Napisa funkcj , która zwróci warto reprezentuj c procent zamówie , które s realizowane
kart kredytow .
Zad 4 Napisa funkcj , która zwróci całkowit warto danego zamówienia (numer zamówienia
powinien stanowi parametr wej ciowy funkcji).
Zad 5 Napisa procedur , która usunie z tabeli Komunikat wszystkie te rekordy, które zawieraj co
najmniej jedn warto NULL.
Zad 6 Napisa procedur , która sprawdzi, jaka ksi ka była najbardziej popularna w ród kupuj cych,
tzn. nale y sprawdzi jaki tytuł najcz ciej si pojawia w ród zamawianych ksi ek.
Procedura powinna doda do tabeli komunikat tytuł tej ksi ki i ilo sprzedanych ksi ek o tym tytule.
Pomoc
Kursor jawny
Deklaracja
CURSOR n_kursora (parametry) IS WYR_SELECT;
(w sekcji deklaracyjnej bloku)
Otwieranie kursora
OPEN n_kursora(parametry);
Pobieranie danych z kursora
FETCH n_kursora INTO zmienna (zmienne);
Zamykanie kursora
CLOSE n_kursora;
lub
FOR i IN n_kursora LOOP
.....
END LOOP;
- w tym przypadku nie trzeba polecen OPEN, FETCH, CLOSE; FOR otwiera i
pozniej zamyka kursor; FETCH niepotrzebne - pod zmienna „i” automatycznie
podstawiane sa wyniki zapytania
Atrybuty kursora jawnego
%ISOPEN – atrybut logiczny, który przyjmuje warto
TRUE, je li kursor jest
otwarty
%NOTFOUND - atrybut logiczny, który przyjmuje warto
TRUE, je li ostatnia
instruncja FETCH nie zwróciła adnego wiersza
%FOUND – odwrotno
%NOTFOUND
%ROWCOUNT – atryut numeryczny, który zwraca liczb wierszy sprowadzonycdo
tego momentu
Wypisywanie komunikatów
1. SET SERVEROUTPUT ON;
2. DBMS_OUTPUT.PUT_LINE(‘Komunikat’);
3. DBMS_OUTPUT.NEW_LINE; -przej cie do nowej linii
Deklaracja funkcji
CREATE [OR REPLACE] FUNCTION n_funkcji[(parametry)]
RETURN typ_danych
IS
[DEKLARACJE]
BEGIN
INSTRUKCJE
[EXCEPTION
obsługa wyj tków]
END [nazwa funkcji];
Deklaracja procedury
CREATE [OR REPLACE] PROCEDURE n_procedury[(parametry)]
IS
[DEKLARACJE]
BEGIN
INSTRUKCJE
[EXCEPTION
obsługa wyj tków]
END [nazwa procedury];
Parametry
nazwa [IN | OUT | IN OUT] typ_danych [ {:= | DEFAULT} wyra enie]
IN- jedynie przekazanie warto ci do programu (nie mo na zmienia ) domy lnie
OUT- warto
parametru jest (po prawidłowym wykonaniu podprogramu) zwracana
do jednostki wołaj cej; uwaga: próba odwołania si do parametru (w
podprogramie) przed przypisaniem: bł d; niezainicjalizowana zmienna
IN OUT- mo liwe jest przekazywanie warto ci do podprogramu i zwracanie
warto ci do wołaj cej jednostki
Sprawdzanie bł dów
SHOW ERRORS;
SELECT * FROM user_errors;
Tworzenie zmiennych globalnych
VARIABLE n_zmiennej typ_zmiennej;
PRINT n_zmiennej;
//wy wietlenie wartosci zmiennej
:n_zmiennej := warto ;
//przypisanie warto ci
Uruchamianie funkcji i procedur
EXECUTE zmienna := nazwa_funkcji [(lista argumentów)]
EXECUTE nazwa_procedury [(lista argumentów)]
Instrukcja IF
IF warunek THEN
instrukcje
ELSIF warunek THEN
instrukcje
....
ELSE
instrukcje
END IF;
P tle
LOOP
instrukcje
END LOOP;
WHILE warunek LOOP
instrukcje
END LOOP;
FOR i IN [REVERSE] min..max LOOP
instrukcje
END LOOP;
EXIT- bezwarunkowe wyj cie z p tli
EXIT WHEN – warunkowe wyj cie z p tli
Pobranie warto ci od u ytkownika
- &parametr (‘&parametr’- zmienna znakowa): u ytkownik poproszony zostanie
o podanie warto ci dla parametr
- &&parametr: j.w., ale podana warto
zostanie zapami tana (parametr
b dzie miał okre lon warto
do momentu rozł czenia)