• Nie Znaleziono Wyników

Bazy danych, 3. ¢wiczenia

N/A
N/A
Protected

Academic year: 2021

Share "Bazy danych, 3. ¢wiczenia"

Copied!
5
0
0

Pełen tekst

(1)

Bazy danych, 3. ¢wiczenia

2007-10-16

1 Plan zaj¦¢

Wst¦p do PL/SQL:

• wprowadzanie,

• podstawowa skªadnia,

• deniowanie zmiennych prostych, zªo»onych,

• interakcja z u»ytkownikiem,

• instrukcje warunkowe,

• p¦tle,

• kursory,

• wyj¡tki.

2 Podstawowa skªadnia

[ DECLARE

deklaracje (np. zmiennych, staªych) ]BEGIN

polecenia programu [ EXCEPTION

obsªuga bª¦dów ]END;

3 Zmienne

Dost¦pne typy zmiennych:

• liczbowe: BINARY_INTEGER, DEC, DECIMAL, FLOAT, INT, INT- GER, NATURAL, NUMBER, NUMERIC, PLS_INTEGER, POSITIVE, REAL, SMALLINT,

(2)

• znakowe: CHAR, CHARACTER, LONG, NCHAR, NVARCHAR2, RAW, STRING, VARCHAR, VARCHAR2,

• logiczne: BOOLEAN,

• czasowe: DATE, TIMESTAMP, INTERVAL,

• zªo»one: RECORD, TABLE, VARRAY,

• wska¹nikowe: REF CURSOR, REF object_type Przykªady deklaracji:

DECLARE

i NUMBER(10);

j INT := 10;

data DATE NOT NULL DEFAULT DATE '2007-01-01';

ok BOOLEAN NOT NULL DEFAULT FALSE;

s VARCHAR(100) := 'ala ma kota';

Zmienne zªo»one:

DECLARE

TYPE t_punkt IS RECORD ( x INT,

y INT );p1 t_punkt;

Dost¦p do poszczególnych pól jak w Pascalu/C (czyli np. p1.x).

Atrybuty %TYPE i %ROWTYPE sªu»¡ do sprawdzania typu okre±lonych pól/wierszy w tabelach.

DECLARE

zmienna tabela.pole%TYPE;

wiersz tabela%ROWTYPE;

Staªe:

DECLARE

nazwa CONSTANT typ := warto±¢;

4 Interakcja z u»ytkownikiem

Blok mo»e zawiera¢ zmienne podstawienia (czyli nazwy zmiennych poprzedzone znakiem '&'), przed uruchomieniem bloku u»ytkownik jest proszony o podanie warto±ci wszystkich zmiennych podstawieniowych.

s:=&abc;

i:=&identyfikator;

Do wypisywania komunikatów sªu»y funkcja dbms_output.put_line() dbms_output.put_line('i='||i||' s='||s);

(3)

5 Instrukcje warunkowe

Skªadnia polecania IF:

IF warunek THEN polecenia

( ELSIF warunek_x THEN polecenia

)*[

ELSEpolecenia ]END IF;

Skªadnia polecania CASE:

CASE wyra»enie

WHEN warto±¢ THEN polecenia1 WHEN warto±¢_2 THEN polecenia2 [ ELSE

polecenia ]END [ CASE ];

CASEWHEN warunek_1 THEN polecenia WHEN warunek_2 THEN polecenia2 [ ELSE

polecenia ]END [ CASE ];

Je±li CASE jest traktowane jako wyra»enie to mo»na ko«czy¢ ENDem, je±li jako polecenie to trzeba je zako«czy¢ END CASE.

6 P¦tle

Skªadnia polecenia LOOP:

LOOPsekwencja

[ IF warunek THEN EXIT; END IF; ] [ EXIT WHEN warunek ; ]

END LOOP;

Skªadnia polecania WHILE:

(4)

WHILE warunek LOOP polecenia

END LOOP;

Skªadnia polecenia FOR:

FOR licznik IN [ REVERSE ] start..koniec LOOP polecenia

END LOOP;

Nie jest konieczne deniowanie zmiennej licznik.

7 Ró»no±ci

• instrukcja NULL (instrukcja która nic nie robi, wypeªniacz pustych blo- ków),

8 Zapytania SQL w PL/SQL

SELECT lista pól INTO lista zmiennych FROM ... ;

INSERT INTO tabela (lista pól) VALUES (lista warto±ci);

INSERT INTO tabela VALUES zmienna_wierszowa;

/* pseudokolumna ROW */

UPDATE tabela SET row = zmienna_wierszowa;

9 Kursory

DECLARE

CURSOR nazwa [ (parametry) ] IS

{ zapytanie_sql | RETURN typ zªo»ony } [ FOR UPDATE [ OF lista pól ] ]

Przykªady:

DECLARE

CURSOR cur_osoby IS SELECT * FROM osoby;

CURSOR cur_osoby2 RETURN osoby%ROWTYPE;

CURSOR cur_wypozyczenia (p_pesel wypozyczenia%TYPE) IS SELECT * FROM wypozycznia WHERE pesel=p_pesel;

Operacje na kursorach:

OPEN nazwa_kursora [ ( warto±ci parametrów) ];

FETCH nazwa_kursora INTO { lista_zmiennych | zmienna wierszowa } ; CLOSE nazwa_kursora;

(5)

Atrybuty kursora:

%ISOPEN

%FOUND

%NOTFOUND

%ROWCOUNT

P¦tle FOR z u»yciem kursorów:

FOR { zmienna rekordowa | zmienna wierszowa } IN nazwa_kursora LOOP polecenia

END LOOP;

Nie jest konieczne otwieranie lub zamykanie kursora. Nie jest równie» konieczne deniowanie zmiennej licznikowej.

P¦tle FOR z zapytaniem SQL:

FOR { zmienna rekordowa | zmienna wierszowa } IN ( zapytanie SQL ) LOOP polecenia

END LOOP;

Kursor niejawny ma nazw¦ SQL (ostatnie wykonywane polecenie SELECT INTO, INSERT, UPDATE, DELETE).

10 Obsªuga wyj¡tków

DECLARE

wyj1 EXCEPTION;

wyj2 EXCEPTION;

BEGIN

polecenia ...

RAISE wyj¡tek;

EXCEPTION

WHEN wyj1 THEN polecenia1 WHEN wyj2 THEN

polecenia2 [ WHEN OTHERS THEN

polecenia.. ] END;

Predeniowane wyj¡tki:

CASE_NOT_FOUND CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR NO_DATA_FOUND TOO_MANY_ROWS VALUE_ERROR ZERO_DIVIDE

Cytaty

Powiązane dokumenty

[r]

[r]

zastosujemy metod¦ do zdania zaczn¡ si¦ pojawia¢ formuªy, które nie b¦d¡ zdaniami. Metody wyznaczania (najbardziej ogólnego) unikatora s¡ wa»nym dziaªem

W szczegól- no±ci funkcje dmvnorm i rmvnorm sªu»¡ odpowiednio do obliczania g¦sto±ci wielowymiarowego rozkªadu normalnego i generowania wektorów losowych z tego» rozkªadu..

Poka», »e indukowana permutacja punktów ma dokªadnie taki sam rozkªad jak w tasowaniu Rie Shue..

[r]

a je±li kto± si¦ zastanawiaª i nie ma pomysªu, albo miaª i »aden pomysª si¦ nie sprawdziª to mo»e przeczyta¢ wskazówk¦: ile mo»e by¢ najwi¦cej kraw¦dzi w grae

5 Poka», »e w przestrzeni Hausdora punkty s¡ domkni¦te, a ci¡gi zbie»ne maj¡ tylko jedn¡