LAB PROCEDURY I FUNKCJE

background image

Deklaracja zmiennych

• DECLARE nazwa zmiennej typ danych
Obsługa sytuacji błędnych
• DECLARE nazwa wyjątku EXCEPTION

FOR SQLSTATE [VALUE] ciąg znaków

VALUE:
02000 Row not found
01000 Waring

background image

Wykonanie warunkowe

IF warunek THEN lista zdań
ELSEIF warunek THEN lista zdań
ELSE
Lista zdań
END IF

CASE

CASE wyrażenie
WHEN wartość THEN lista zdań

Powtórzenia

WHILE warunek LOOP
Lista zdań
END LOOP

background image

Prosta procedura IN (1)

CREATE PROCEDURE firma (IN parametr

CHAR(1))

BEGIN
IF parametr = ‘n’ THEN
SELECT nazwa_firmy, miasto, ulica
FROM klienci
ELSE

SELECT nazwa_firmy, telefon
FROM klienci

END IF
END

background image

Prosta procedura IN (2)

• CREATE PROCEDURE wpis_kwalifikacji

(IN id INTEGER,
IN nazwa CHAR(30),
IN opis VARCHAR(45)
IN kategoria INTEGER)

BEGIN

INSERT INTO dba.kwalfikacje (id_kwal,

nazwa, kwal_opis, id_kat)

VALUES (id, nazwa, opis, kategoria)
END

background image

Prosta procedura OUT (1) –

pojedynczy parametr w wyniku

• CREATE PROCEDURE średnia_płaca

(OUT średnia DECIMAL (10,2))
BEGIN

-- CREATE VARIABLE średnia DECIMAL

(10,2) 

zmienna przechowująca wartość

parametru OUT

SELECT AVG(pensja) INTO średnia FROM
PRACOWNIK
END

background image

Prosta procedura OUT (2) –

wynikiem jest lista/zbiór

• CREATE PROCEDURE lista_plac (IN

nr_wydziału INTEGER)

RESULT (Identyfikator_prac INTEGER, pensja

DECIMAL (10,2))

BEGIN
SELECT id_pracownika, pensja FROM

pracownik

WHERE pracownik.id_wydziału = nr_wydziału
END

background image

Kursor – przetwarzanie

wierszowe

• Deklaracja kursora z przyporządkowaniem

instrukcji SELECT

– DECLARE nazwa_kursora

CURSOR FOR zapytanie_SELECT
[FOR {READ ONLY|UPDATE}]

• Otwarcie kursora

– OPEN nazwa_kursora

• Pobieranie kolejnych wierszy w wyniku zapytania

i przypisywanie ich do zmiennych za pomocą

instrukcji FETCH

– FETCH nazwa_kursora INTO nazwa_zmiennej

• Zamknięcie kursora

– CLOSE nazwa_kursora

background image

Przykład kursora (1)

BEGIN

DECLARE kurs_prac CURSOR FOR SELECT

nazwisko FROM Pracownik;
DECLARE nazwisko_prac CHAR(40);

OPEN kurs_prac
LOOP

FETCH NEXT kurs_prac INTO nazwisko_prac;
….

END LOOP
CLOSE kurs_prac

END

background image

Funkcja

• CREATE FUNCTION dane_osob (imie

(CHAR(20)), nazwisko (CHAR(30)))
RETURNS (CHAR 51);
BEGIN
DECLARE dane_os CHAR(51);
SET dane_os = imie|| ‘ ‘ ||nazwisko;
RETURN dane_os;
END

background image

TRIGGERY

• CREATE TRIGGER nazwa_triggera czas_zadziałania_zdarzenia [,

zdarzenie, …]

[ORDER integer] ON nazwa_tabeli

[REFERENCING [OLD AS stara_nazwa]
[NEW AS nowa_nazwa]]
[FOR EACH ROW {ROW|STATEMENT}]
[WHEN (warunek wyboru)]
[IF UPDATE (nazwa_kolumny)] …] ciąg zdań (zdanie złożone)]
[{AND|OR} UPDATE (nazwa_kolumny)] …] ciąg zdań (zdanie

złożone)]
ELSEIF UPDATE (nazwa_kolumny) THEN [{AND|OR} UPDATE

(nazwa_kolumny)] …] ciąg zdań (zdanie złożone)]
END IF]]

Czas zdarzenia – BEFORE, AFTER
Zdarzenia – DELETE|INSERT|UPDATE|UPDATE OF lista kolumn
REFERENCING – rozróżnienie dla starych i nowych nazw

background image

FOR EACH

• FOR EACH ROW – działania

aktualizacji, wstawiania bądź
usuwania wykonywane na
pojedynczym wierszu

• FOR EACH STATEMENT – działanie

aktualizacji , wstawiania bądź
usuwania po wykonaniu całej
instrukcji


Document Outline


Wyszukiwarka

Podobne podstrony:
Procedury i funkcje
Procedury i funkcje trybu grafi Nieznany
procedury i funkcje
PAS procedury funkcje (2)
wykład 4 procedury, funkcje, sekwencje, paczki, wyzwalacze
pk procedury i funkcje
STRING - Procedury i funkcje, Szkoła, Klasa 1, Programowanie struktularne i obiektowe
procedury i funkcje
06 Procedury i funkcje cwiczenia przygotowujace
6 TurboPascal Procedury i funkcje
PL SQL Procedury i funkcje składowane Politechnika Poznańska
Procedury i funkcje
Procedury i funkcje trybu grafi Nieznany
widoki,procedury,funkcje
8 Procedury , funkcje

więcej podobnych podstron