Bazy danych kolo 2 1 id 81756 Nieznany

background image

1

WYKŁAD 7.......................................................................................................................................................................... 2

1. Czym jest SQL*PLUS? ................................................................................................................................................ 2

2. Podad 3 sposoby tworzenia zmiennej tymczasowej. ................................................................................................ 2

3. Definicje zmiennej dowiązanej. ................................................................................................................................ 2

4. Z jakich części składa się blok anonimowy? .............................................................................................................. 2

5. Które instrukcje SQL można umieszczad w blokach PL/SQL?.................................................................................... 3

6. Jak wyświetlid wartośd zmiennej w bloku PL/SQL? *?* ............................................................................................ 3

WYKŁAD 8.......................................................................................................................................................................... 3

1. Instrukcja SQL%ROWCOUNT ..................................................................................................................................... 3

2. Różnice między zmienną typu wierszowego a zmienną typu rekordowego *?* ...................................................... 3

3. Różnice między funkcją a procedurą ........................................................................................................................ 4

4. Kiedy stosuje się atrybuty %TYPE i %ROWTYPE *?* ................................................................................................. 4

5. Typy parametrów w definicji podprogramu ............................................................................................................. 4

6. Cechy pakietu ............................................................................................................................................................ 5

WYKŁAD 9.......................................................................................................................................................................... 5

1. Definicja i zastosowanie kursora jawnego ................................................................................................................ 5

2. Definicja wyzwalacza (TRIGGER) ............................................................................................................................... 5

3. Wyzwalacz DML *?* .................................................................................................................................................. 6

4. Wyzwalacz systemowy .............................................................................................................................................. 6

5. Wyzwalacz zastępujący ............................................................................................................................................. 6

6. Zmiana statusu wyzwalacza ...................................................................................................................................... 7

WYKŁAD 10........................................................................................................................................................................ 7

1. Różnice między błędami kompilacji i wykonania. ..................................................................................................... 7

2. Kolejnośd obsługi wyjątku. ........................................................................................................................................ 7

3. Obsługa błędów niepredefiniowanych. .................................................................................................................... 7

4. Da czego służy procedura Raise_Application_Error? ................................................................................................ 8

5. Zastosowanie dyrektywy PRAGMA EXCEPTION_INIT. .............................................................................................. 8

6. Czy zgłoszenie wyjątku jest równoznaczne z zakooczeniem działania programu. ................................................... 8

WYKŁAD 11........................................................................................................................................................................ 9

1. Pragma – przykład zastosowania. *?* ...................................................................................................................... 9

2. Definicja transakcji .................................................................................................................................................... 9

3. Własności ACID transakcji ......................................................................................................................................... 9

4. Wymieo 5 anomalii transakcji ................................................................................................................................... 9

5. Rodzaje blokad transakcji ......................................................................................................................................... 9

6. Zakleszczenie transakcji .......................................................................................................................................... 10

7. Transakcje autonomiczne - definicja....................................................................................................................... 10

background image

2

WYKŁAD 7

1. Czym jest SQL*PLUS?

Prosty interfejs do bazy danych ORACLE.

uruchamiany z wiersza poleceo.

Umożliwiający wpisywanie instrukcji z klawiatury i uruchamianie skryptów zawierających te instrukcje.

Wersje: klient z GUI, SQL Worksheet, iSQL*Plus, sqldeveloper.

Możliwości: wykonywanie instrukcji, formatowanie, tworzenie bloków anonimowych.

2. Podać 3 sposoby tworzenia zmiennej tymczasowej.

Definicja w wewnątrz jednej instrukcji poprzez dodanie nazwy poprzedzonej znakiem &

o Służy do interaktywnego podstawiania wartości oraz nazw tabel i kolumn.
o select nazwisko from prac where id_zesp= &numer_zesp;;

Można uniknąd powtarzania wpisywania wartości zmiennej stosując &&

o select nazwisko, &&n_kol from
o &n_tab where &&n_kol= &n_war;

Poleceniem DEFINE przed użyciem instrukcji SQL do wielokrotnego wykorzystania

o Przechowywana w bazie aż do jawnego usunięcia lub zakooczenia programu SQL*PLUS
o Define nr_zesp = 20;

ACCEPT służy do wprowadzania nowej wartości dla zmiennej już istniejącej.

o służy do zdefiniowania i zainicjalizowaniu nowej zmiennej.
o umożliwia określenie typu dla zmiennej.

Jeśli w skrypcie używa się zmiennych tymczasowych, to powinno się je numerowad i uruchamiad skrypt podając ich
wartości w kolejności numerów, oddzielone spacjami.

3. Definicje zmiennej dowiązanej.

VARIABLE zm NUMBER (lub char(n), varchar2(n), n>0)- deklaracja zmiennej dowiązanej.

EXECUTE :zm := wyrażenie; przypisanie zmiennej dowiązanej wartości.

Po ustaleniu wartości można zmienne dowiązane poprzedzone dwukropkiem używad w instrukcjach SQL i
PL/SQL.

PRINT zm- wypisanie wartości zmiennej dowiązanej zm w SQL *Plus.

4. Z jakich części składa się blok anonimowy?

Fragment kodu, który nie jest zachowany ani nie ma nazwy (wykonywany tylko w aktualnej sesji lub umieszczony w
skrypcie)

DECLARE- deklaracje obiektów PL/SQL jak zmienne, stałe, wyjątki, procedury.

BEGIN- ciąg instrukcji do wykonania.

EXCEPTION- obsługa wyjątków (błędów)

END:

Bloki mogą byd zagnieżdżone.

background image

3

5. Które instrukcje SQL można umieszczać w blokach PL/SQL?

SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK.


6. Jak wyświetlić wartość zmiennej w bloku PL/SQL? *?*

DECLARE

v_text VARCHAR2(10); --deklaracja

BEGIN

v_text := ‘hello’; -- przypisanie wartości

dbms.output.Put_line(v.text); --wyświetlenie

END

WYKŁAD 8

1. Instrukcja SQL%ROWCOUNT

SQL%ROWCOUNT- liczba wierszy przetworzonych przez ostatnią instrukcję SQL.

Użycie zmienne SQL%ROWCOUNT do obliczenia liczby usuwanych pracowników z zespołu o numerze 50.

DECLAR usunieto NUMBER;
BEGIN
DELETE FROM prac WHERE id_zesp =50;
usunieto := SQL%ROWCOUNT;
DBMS_OUTPUT.PUT_LINE(usunieto);
END;


2. Różnice między zmienną typu wierszowego a zmienną typu rekordowego *?*

Zmienne wierszowe

DECLARE
rek_osoby prac %ROWTYPE; - typ wierszowy.

nie można używad bezpośrednio po słowie kluczowym VALUES w instrukcji INSERT TO.

Zmienne rekordowe

Typy rekordowe mogą byd zagnieżdżone

Dostęp do pól rekordu jest przy pomocy notacji kropkowej

Do zmiennej rekordowej można przypisad wartośd innej zmiennej rekordowej, ale tylko tego samego typu
rekordowego.

Typ rekordowy może byd zagnieżdżony, wierszowy składad się może tylko z prymitywów. Wierszowy reprezentuje
bezpośrednio wiersz w tabeli.

background image

4

3. Różnice między funkcją a procedurą

Procedura- wykonanie akcji

PROCEDURE nazwa *(lsta parametrów)+ IS *deklaracje+
BEGIN instrukcje
[EXCEPTION- obsługa wyjątków+
END;

Funkcja- obliczenie wartości

FUNCTION nazwa *(lista parametrów)+
RETURN nazwa_typu IS [deklaracje]
BEGIN instrukcje
[EXCEPTION- obsługa wyjątków+
END;

return- zwraca wartośd, musi wystąpid



Różnica jest taka że funkcja musi zwrócid jakąś wartośd oraz zawierad słowo kluczowe return a procedura ma coś po
prostu wykonad i nic nie zwraca.

4. Kiedy stosuje się atrybuty %TYPE i %ROWTYPE *?*

Atrybut %TYPE – do deklarowania zmiennej prostej na podstawie typu atrybutu relacji bazy danych lub typu
innej zmiennej.

Atrybut %ROWTYPE – do deklarowania zmiennej rekordowej w oparciu o schemat relacji, kursora lub typ
innej zmiennej rekordowej.

5. Typy parametrów w definicji podprogramu

Tryb w jakim wartości są przekazywane do podprogramu.

IN -Przekazuje wartośd do programu ze środowiska wołającego. wewnątrz parametr zachowuje się jak stała,
nie można zmienid wartości

OUT- Przekazuje wartośd z programu do środowiska wołającego . wewnątrz parametr zachowuje się jak
zmienna, która nie została zdefiniowana, jej wartośd jest zwracana do jednostki nadrzędnej.

IN OUT- możliwe przekazywanie wartości do podprogramu i na zewnątrz.

Dla OUT i IN OUT- można użyd NOCOPY- przesyłanie przez referencję a nie przez wartośd.


background image

5

6. Cechy pakietu

Pakiet- grupuje powiązane logiczne procedury w funkcje, zmienne, kursory.

CECHY:

ukrycie informacji- użytkownikowi jest udostępniana tylko specyfikacja pakietu (interfejs), implementacja
procedur i funkcji jest niewidoczna.

zwiększenie funkcjonalności- zmienne zadeklarowane w pakietach istnieją przez całą sesję użytkownika-
mogą służyd do wzajemnej komunikacji dla różnych procesów.

zwiększenie szybkości działania- przy pierwszym odwołaniu do pakietu cała jego zawartośd jest ładowana do
pamięci.

współdzielenie przez wielu użytkowników.

możliwośd zmiany implementacji pakietu bez konieczności rekompilacji modułów zależnych.

CECHY II:

Elementy pakietu mogą byd ustawione w dowolnej kolejności.

Deklaracja obiektu musi byd przed jego kodem.

Dowolny obiekt zadeklarowany w nagłówku pakietu ma zasięg poza danym pakietem.

Podprogramy z pakietu można przeciążad.

WYKŁAD 9

1. Definicja i zastosowanie kursora jawnego

KURSOR

Udostępnia podzbiór danych zdefiniowanych przez zapytanie.

Dane pobierane są do pamięci i kursor jest do niej wskaźnikiem

otwarcie kursora to pobranie części bieżących danych- zmiana, dodanie lub usunięcie danych po jego
otwarciu nie będzie miało odzwierciedlenia w zbiorze który zwrócił kursor.

KURSOR JAWNY

deklarowane i kontrolowane przez programistę

deklarowane w instrukcjach SELECT (najczęściej takich które zwracają więcej niż jeden wiersz)w części
deklaracyjnej.

Tymczasowa struktura służąca do pobierania wyniku zapytania SQL.

Kursor umożliwia pobieranie rekordów sekwencyjnie, po jednym lub więcej na raz, a także przemieszczanie się
po wynikach zapytania

2. Definicja wyzwalacza (TRIGGER)

Blok nazwany PL/SQL (lub napisany w JAVIE lub w C)- obiekt BD.

uruchamiany niejawnie gdy zachodzi określone zdarzenie w BD.

może uruchamiad instrukcje języka SQL oraz funkcje i procedury języka PL/SQL.

background image

6

3. Wyzwalacz DML *?*

DML

uruchamiany w wyniku INSERT, UPDATE lub DELETE

wykonywane przed lub po instrukcji

dla jednej tabeli

dla wszystkich lub wybranych wierszy tabeli,

do audytowania,

sprawdzania

rejestrowania wartości przed ich zmodyfikowaniem przez instrukcje lub wyzwalacz.

może reagowad na kilka zdarzeo

nazwa wyzwalacz może byd taka sama jak nazwa tabeli (nie jest zalecane)

Rodzaje wyzwalaczy DML

TYP AFTER (po operacji DML)

TYP BEFORE (przed operacją DML)

TYP INSTED OF (zamiast operacji DML)

4. Wyzwalacz systemowy

Wykonywane w wyniku wystąpienia zdarzeo DDL (create, alter, drop) lub zdarzeo BD (uruchomienie, zamknięcie
serwera, zalogowanie, wylogowanie użytkownika, błędy serwera).

np: STARTUP - AFTER. SHUTDOWN - BEFORE, SERVERERROR- AFTER, LOGON- AFTER, LOGOFF - BEFORE.

5. Wyzwalacz zastępujący

Stosuje się aby

umożliwid wprowadzanie zmian w perspektywie, której nie można zmodyfikowad

do modyfikowania tabeli zagnieżdżonej w perspektywie.

pozwala na wykonanie pewnej operacji zamiast inne operacji która uruchomiła wyzwalacz.

zawsze typu ROW

nie ma AFTER, BEFORE, WHEN

znaczenie pozostałych parametrów bez zmian.

ma możliwośd odczytu wartości :OLD i :NEW, nie można ich zmieniad.

nie może byd zdefiniowany dla tabeli.

background image

7

6. Zmiana statusu wyzwalacza

Włączenie wyzwalacza
ALTER TRIGGER nazwa_w ENABLE;

Wyłączenie wyzwalacza
ALTER TRIGGER nazwa_w DISABLE; lub ALTER TABLE nazwa_tabeli ENABLE ALL TRIGGERS;

Usuwanie wyzwalacza
DROP TRIGGER nazwa_w

o Usunięcie tabeli usuwa związane z nią wyzwalacze.

WYKŁAD 10

1. Różnice między błędami kompilacji i wykonania.

PLS - BŁĘDY KOMPILACJI

wykrywa je kompilator PL/SQ L i informuje użytkownika

program nie może ich obsłużyd, bo nie zaczął się wykonywad

poprawia programista (obsługa interaktywna)
Komunikat o błędzie zawiera informację w którym wierszu *i kolumnie+ wystąpił błąd.
Wynikają z pomyłek w trakcie pisania kodu np: pominięcie średnika.

ORA - BŁĘDY WYKONANIA

mogą wystąpid w trakcie wykonania programu

są zgłaszane i przechwytywane przez programy obsługi wyjątków.
Mogą znajdowad się w sekcji: deklaracji, wykonawczej, obsługi błędów


2. Kolejność obsługi wyjątku.

w momencie zaistnienia wyjątku wykonanie aktualnego bloku kooczy się.

wywołuje się funkcję obsługi tego wyjątku.

w przypadku zgłoszenia wyjątku, szukana jest klauzula w najbliższym bloku, potem w bloku wyżej, aż do
klauzuli w bloku zewnętrznym (obejmującym).

sterowanie jest zwracane do następnej instrukcji w bloku nadrzędnym (zawierającym blok, w którym
wystąpił wyjątek)

jeśli taki blok nie istnieje to sterowanie jest zwracane do systemu.


3. Obsługa błędów niepredefiniowanych.

-Deklaracja wlasnego wyjątku (w sekcji IS):
Declare wyjatek EXCEPTION;
-Wywołanie wyjątku:
RAISE wyjatek;
-Mamy 2 sposoby:

Za pomocą klauzuli WHEN OTHERS w połączeniu z funkcją SQLCODE I SQLERPM

Kojarzymy wyjątek użytkownika z odpowiednim kodem błędu i obsługujemy poprzez
mechanizm obsługi błędów użytkownika

background image

8


4. Da czego służy procedura Raise_Application_Error?

Służy do tworzenia nowych błędów z własnym kodem i opisem błędu

Raise_Application_Error(err_no number, err_msg
varchar2, keep_errors boolean)
- err_no – numer z przedziału *-20000,-20999]
- err_msg – napis o długości < 512 bajtów
- keep_errors (true – nowy błąd zostanie dopisany
do listy już zdefiniowanych błędów, false – nowy
błąd zastąpi listę już zgłoszonych błędów)
P R Z Y K Ł A D :
Raise_Application_Error(-20100,’Błąd’, true)


5. Zastosowanie dyrektywy PRAGMA EXCEPTION_INIT.

Jest używana do skojarzenia wyjątku zdefiniowanego przez użytkownika z numerem błędu zdefiniowanym przez
ORACLE
np.

CREATE OR REPLACE PACKAGE BODY
wyroznienia AS
FUNCTION nagroda (p_id_prac NUMBER)
RETURN NUMBER
IS
PRAGMA AUTONOMOUS_TRANSACTION;
PRAGMA EXCEPTION_INIT(zakleszczenie, -60);
BEGIN

--cialo funkcji

EXCEPTION
WHEN zakleszczenie THEN

--obsługa błędu

END wyroznienia;


6. Czy zgłoszenie wyjątku jest równoznaczne z zakończeniem działania programu.

Nie, ponieważ kiedy zostaje zgłoszony wyjątek następuje przerwanie programu i przejście do programu obsługi
wyjątków. Po obsłudze wyjątku program może byd kontynuowany lub zatrzymany. Można tym sterowad poprzez
zagnieżdżanie bloków.

background image

9

WYKŁAD 11

1. Pragma – przykład zastosowania. *?*

np. PRAGMA RESTRIC_REFERENCES(nazwa_funkcji, opcja,...) - określa sposób współdziałania funkcji z bazą
danych i zmiennymi pakietu, wymusza sprawdzenia czystości funkcji w stosunku do informacji podanych na
etapie kompilacji:
WNDS - funkcja nie modyfikuje stanu BD
WNPS - funkcja nie modyfikuje wartości zmiennych pakietu

CREATE OR REPLACE PACKAGE BODY
wyroznienia AS
FUNCTION nagroda (p_id_prac NUMBER)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (nagroda, WNDS, WNPS);
zakleszczenie EXCEPTION;
END;


2. Definicja transakcji

abstrakcyjna reprezentacja programu użytkownika

jednostka pracy

sekwencja logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu
spójnego w inny stan spójny.


3. Własności ACID transakcji

niepodzielnośd (atomicity) - albo zostaną wykonane wszystkie operacje albo żadna

spójnośd (consistency) - przeprowadzenie BD z jednego stanu spójnego do innego stanu spójnego,
nienaruszenie ograniczeo integralnościowych.

izolacja (isolation) - mimo współbieżnego wykonywania, transakcje widzą stan BD tak, jak gdyby były
wykonywane w sposób sekwencyjny.

trwałośd (durability) - po zakooczeniu transakcji zmiany są utrwalone. Awaria sprzętu nie niszczy danych.


4. Wymień 5 anomalii transakcji

1. odczyt niezatwierdzonych danych - przeczytanie wiersza, który nigdy nie był zatwierdzony
2. niepowtarzalny odczyt - czyta ponownie wiersz, który został zmieniony lub usunięty
3. fantom - wiersz, którego nie było w tabeli na początku transakcji, a który został wprowadzony przez

zatwierdzoną transakcję w trakcie wykonywania transakcji

4. stracona aktualizacja
5. zapis i wycofanie niezatwierdzonych danych - po wykonaniu rollback baza może nie byd spójna.


5. Rodzaje blokad transakcji

blokada (lock) - jedna z transakcji rezerwuje sobie dostęp do obiektu. Inne transakcje nie mają dostępu do
obiektu lub mają dostęp ograniczony.

background image

10

blokada wyłączna (exclusive lock) - transakcja zablokowywuje jakikolwiek dostęp do obiektu dla innych
transakcji. Tylko jedna transakcja może mied założoną wyłączną blokadę na obiekcie i w tym czasie nie może
byd założonej żadnej innej blokady nawet współdzielonej

blokada współdzielona (shared lock) - inne transakcje mogą czytad, ale nie mogą modyfikowad obiektu. Kilka
transakcji może jednocześnie pracowad na tej samej tabeli. jeśli transakcja zakłada współdzieloną blokadę,
inne transakcje też mogą założyd współdzieloną blokadę, ale nie mogą założyd wyłącznej blokady


6. Zakleszczenie transakcji

jeśli transakcja T1 zablokowała zasób X i żąda dostępu do zasobu Y.

jeśli transakcja T2 zablokowała zasób Y i żąda dostępu do zasobu X,
TO : ani T1, ani T2 nie mogą dalej kontynuowad jakiejkolwiek akcji.
System zawiesił się.


7. Transakcje autonomiczne - definicja

rozpoczyna się w kontekście innej transakcji określanej transakcją macierzystą, ale jest od niej niezależna

może byd zatwierdzona lub wycofana niezależnie od stanu transakcji macierzystej

wykonywanie komendy COMMIT lub ROLLBACK w jednym programie nie wpływa na żadne inne dane, które
mogłyby zostad utworzone poza tym programem.

wewnątrz transakcji autonomicznej można zastosowad dowolną instrukcję sterowania transakcją wyłącznie z
instrukcjami COMMIT, ROLLBACK, SAVEPOINT, ROLLBACK TO


Wyszukiwarka

Podobne podstrony:
bazy danych druga id 81754 Nieznany (2)
Bazy Danych1 secret id 81733 Nieznany (2)
bazy danych kol 2 id 81577 Nieznany (2)
bazy danych wyk2 id 81712 Nieznany (2)
bazy danych wyklad1 id 81713 Nieznany (2)
Bazy Danych bd4 id 633777 Nieznany (2)
Bazy danych 07 id 81462 Nieznany (2)
bazy danych wyk id 81390 Nieznany (2)
bazy danych sql id 81694 Nieznany
BAZY danych wyk id 81710 Nieznany (2)
Bazy Danych kolokwium1 id 81578 Nieznany (2)
bazy danych wyklady id 81711 Nieznany (2)
Bazy danych egzamin(1) id 81477 Nieznany
Bazy Danych bd5 id 633778 Nieznany (2)
bazy danych druga id 81754 Nieznany (2)
Bazy Danych1 secret id 81733 Nieznany (2)
bazy danych kol 2 id 81577 Nieznany (2)
biochemia kolo id 86264 Nieznany (2)

więcej podobnych podstron