Bazy danych, druga zerówka
13.01.2014
1
Wykład 1
1.1
Czym jest SQL * PLUS?
Jest to terminalowy klient Oracle SQL, interaktywny interfejs tekstowy (linia komend).
1.2
Zmienna tymczasowa
Zmienna przechowująca wartość, krotkę lub całą tabelę do wykorzystania w obrębie
danego połączenia (po wylogowaniu się jest kasowana).
Globalna tymczasowa tablica:
CREATE GLOBAL TEMPORARY TABLE n a z w a t a b l i c y (
w a r t o s c t y p .
w a r t o s c t y p
) ;
Pobranie krotki do zmiennej tymczasowej
SELECT INTO z m i e n n a FROM t a b e l a WHERE w a r u n e k ;
poprawnie?
1.3
Podać 3 sposoby tworzenia zmiennej zdefiniowanej
DEFINE z m i e n n a = w a r t o s c
O to chodzi?
1.4
Blok anonimowy
Blok instrukcji bez nazwy, do wykonania od razu.
BEGIN
−− i n s t r u k c j e
END;
1
1.5
Które instrukcje SQL można umieszczać w blokach PL/SQL?
wszystkie poza zarządzeniem prawami chyba
1.6
Jak wyświetlić wartość zmiennej w bloku PL/SQL?
DBMS OUTPUT . PUT LINE ( n a z w a z m i e n n e j ) ;
2
Wykład 2
2.1
Instrukcja SQL%ROWCOUNT
Ilość wierszy (dodanych/zmienionych/pobranych/usuniętych) w ostatnim wyrażeniu
SQL.
2.2
Różnice między zmienną typu wierszowego a zmienną typu
rekordowego
Typ rekordowy może być zagnieżdżony, wierszowy składać się może tylko z prymitywów.
Wierszowy reprezentuje bezpośrednio wiersz w tabeli.
Rekordowy:
TYPE T y p r e k p r a c I S RECORD
( n u m e r p r a c NUMBER( 4 ) NOT NULL,
n a z w i s k o VARCHAR2( 4 0 ) NOT NULL,
Z a r o b k i NUMBER( 8 , 2 ) ,
Num dzia ł u NUMBER( 4 ) ) ;
r e k o r d p r a c
T y p r e k p r a c ;
Wierszowy:
t y p w i e r s z o w y
n a z w a t a b e l i%ROWTYPE;
Coś więcej?
2.3
Różnice między funkcją a procedurą
Funkcja coś zwraca (wartość/krotka/tabela), procedura niczego nie zwraca. Podobnie
jak w Pascalu.
2.4
Procedura składowana
Procedura składowana to procedura będąca po stronie serwera, nie klienta.
CREATE OR REPLACE PROCEDURE n a z w a p r o c e d u r y
[ ( p a r a m e t r y ) ] I S
BEGIN
[ i n s t r u k c j e ]
END;
2
2.5
Typy parametrów w definicji podprogramu
• wejściowe (IN, tylko do odczytu)
• wyjściowe (OUT, tylko do zapisu)
• obustronne (IN OUT, coś jak referencja w C++, domyślne?)
2.6
Cechy pakietu
Pakiet to interfejs dostarczony klientowi przez serwer w postaci zbiorów funkcji/proce-
dur, klas, typów.
Deklaracja pakietu (same nazwy)
CREATE OR REPLACE PACKAGE n a z w a p a k i e t u
I S
[ d e k l a r a c j e
t y p ów ,
f u n k c j i ,
p r o c e d u r ]
END;
Definicja pakietu (wraz z ciałami procedur, funkcji, typów)
CREATE OR REPLACE PACKAGE BODY n a z w a p a k i e t u
I S
[ d e f i n i c j e
t y p ów ,
f u n k c j i ,
p r o c e d u r ]
END;
3
Wykład 3
3.1
Definicja kursora jawnego
Kursor zadeklarowany jawnie, po którym samemu się iteruje
Dodać przykłady definicji i iteracji po jawnym
3.2
Definicja Wyzwalacza
Wyzwalacz to zapożyczenie z paradygmatu aspektowego: „zrób coś, gdy coś”. Rejestruje
się procedury mające się wykonać np. przed lub po wykonaniu jakiejś akcji (dodanie wiersza
do tabeli, usunięcie, modyfikacja)
CREATE [OR REPLACE ] TRIGGER n a z w a w y z w a l a c z a
[ BEFORE | AFTER ]
z d a r z e n i e
[ OF kolumna ]
ON t a b e l a
[ k l a u z u l a r e f e r e n c i n g ]
[WHEN w a r u n e k ]
[ FOR EACH ROW]
BEGIN
−− i n s t r u k c j e
END;
3
3.3
Wyzwalacz DML
Wyzwalacz na operacjach SELECT, DELETE, INSERT , UPDATE, CALL, EXPLAIN PLAN,
LOCK TABLE, MERGE Pozwala np. monitorować (prowadzić logi) operacji na danych
W treści wyzwalaczy dostępne są zmienne :old lub/i :new (w zależności od operacji –
na logikę przy INSERT nie ma :old)
3.4
Wyzwalacz systemowy
Wywoływany przy operacjach DDL: CREATE, ALTER, DROP
Też jest :old i :new?
3.5
Wyzwalacz zastępujący
Wyłącznie dla widoków (perspektyw)
Przykład, po co one
3.6
Perspektywa modyfikowalna
http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad3/w3.htm
4
Wykład 4
4.1
Różnice między błędami kompilacji i wykonania
PLS — Błąd kompilacji — występuje w momencie kompilacji, często błąd składniowy,
uniemożliwia kompletnie wykonanie kodu. Błąd wyskakuje w momencie stworzenia funkcji
/ procedury / typu lub po wysłaniu instrukcji z błędem
skonkretyzować
ORA — Błąd wykonania — występuje dopiero w czasie wykonywania kodu, często
zależy od samych danych, jak np. nieprzewidziane dzielenie przez zero, brak danych do
operowania na nich i nie obsłużenie takiego przypadku, błąd serwera.
Może wystąpić PLS w czasie wykonywania kodu w którym jest fragment dynamicznego
kodu.
warto wspominać?
4.2
Kolejność obsługi wyjątku
4.3
Obsługa błędów niepredefiniowanych
Dekalracja własnego wyjątku (w sekcji IS):
DECLARE w y j a t e k EXCEPTION ;
Wywołanie wyjątku
4
RAISE w y j a t e k ;
4.4
Do czego służy procedura RAISE APPLICATION ERROR?
4.5
Zastosowanie dyrektywy PRAGMA EXCEPTION INIT
Służy do kojarzenia błędu Oracle z wyjątkiem użytkownika
Coś więcej
4.6
Czy zgłoszenie wyjątku jest równoznaczne z zakończeniem
działania programu.
Kończy jedynie wykonywany blok podprogramu:
DECLARE
D e c l a r a t i o n
s e c t i o n
BEGIN
−− i n s t r u k c j e
[ 1 ]
DECLARE
D e c l a r a t i o n
s e c t i o n
BEGIN
−− i n s t r u k c j e
[ 2 ]
EXCEPTION
−−o b s ł uga w y j ą t k u z a g n i e ż d ż ongo z [ 2 ]
END;
−− i n t r u k c j e
[ 3 ]
EXCEPTION
−−o b s ł uga w y j ą t k u z [ 1 ] ,
[ 3 ]
i
[ 2 ] ,
j e ś l i
n i e by ł z ł a p a n y
END;
czy tak to może być? Sprawdzić w praktyce
5