background image

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

background image

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

background image

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

background image

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

background image

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