Procedura - przykład Procedury – wywoływanie

Transkrypt

Procedura - przykład Procedury – wywoływanie
Składnia definicji procedury
CREATE [OR REPLACE] PROCEDURE nazwa_procedury
(parametr1 [{IN|OUT|IN OUT}] TYP_DANYCH
[DEFAULT wyrażenie],
parametr2 [{IN|OUT|IN OUT}] TYP_DANYCH
[DEFAULT wyrażenie],...)
{IS|AS}
[zmienna1 TYP_DANYCH ;
zmienna2 TYP_DANYCH ;
...]
BEGIN
instrukcje_wykonawcze
[EXCEPTION
WHEN nazwa_wyjątku
THEN
instrukcje_wykonawcze]
END;
/
BAZY DANYCH
W APLIKACJACH
SIECIOWYCH
Wykład 2
Procedury i funkcje zapamiętane
oraz pakiety.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2014-2015 E. Busłowska
1
Typy przekazywania parametrów
2
Procedura - przykład
1. IN – przekazanie wartości do wywołanego
podprogramu w którym parametr nie ulega
zmianie.
2. OUT - przekazanie wartości do wywołanego
podprogramu, która nie może być przypisana do
innej zmiennej. Można jedynie nadać wartość.
3. IN OUT - przekazanie wartości do wywołanego
podprogramu i przy zwykłym zakończeniu (bez
błędu) wartość parametru jest przekazywana
do wywołującego podprogramu.
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
3
CREATE OR REPLACE
PROCEDURE mod_cene
(p_isbn t_ksiazka.isbn%TYPE,
p_wartosc NUMBER)
IS
BEGIN
UPDATE t_ksiazka SET cena = cena + p_wartosc
WHERE isbn = p_isbn;
END mod_cene;
Copyright © 2014-2015 E. Busłowska
4
Składnia definicji funkcji
Procedury – wywoływanie
PROCEDURE p1 (x NUMBER, y NUMBER )
IS...
1) p1(a,b) -- notacja pozycyjna
2) p1(x=>a, y=>b) -- notacja imienna
p1(y=>b, x=>a)
EXECUTE p1(4,2);
Copyright © 2014-2015 E. Busłowska
5
CREATE [OR REPLACE] FUNCTION nazwa
(parametr1 TRYB TYP_DANYCH [DEFAULT wyrażenie],
parametr2 TRYB TYP_DANYCH [DEFAULT wyrażenie],...)
RETURN TYP_DANYCH
{IS|AS}
[zmienna1 TYP_DANYCH ;
zmienna2 TYP_DANYCH ;
...]
BEGIN
instrukcje_wykonawcze;
RETURN wyrażenie;
[EXCEPTION
WHEN nazwa_wyjątku
THEN
instrukcje_wykonawcze]
END;
/
Copyright © 2014-2015 E. Busłowska
6
1
Funkcja - przykład
Funkcje – wywoływanie
CREATE OR REPLACE
FUNCTION wyznacz_VAT
(p_isbn t_ksiazka.isbn%TYPE)
RETURN NUMBER
IS
v_cena ksiazka.cena%TYPE;
BEGIN
SELECT cena INTO v_cena
FROM t_ksiazka
WHERE isbn = p_isbn;
RETURN (v_cena*0.07);
END wyznacz_VAT;
/
Copyright © 2014-2015 E. Busłowska
1)
DECLARE
Zmienna_lokalna TYP_DANYCH;
BEGIN
Zmienna_lokalna := nazwa_funkcji
(argument1, argument2, ...);
END;
/
2)
VARIABLE zmienna_SQL*Plus TYP_DANYCH
EXECUTE : zmienna_SQL*Plus := nazwa_funkcji
(argument1, argument2, ...);
PRINT zmienna_SQL*Plus
7
Copyright © 2014-2015 E. Busłowska
8
Komunikaty o błędach
Pakiety (ang. package)
Błędy bloków anonimowych pojawiają się na
standardowym wyjściu
Deklaracja procedur
Deklaracja funkcji
SHOW ERRORS
Specyfikacja
pakietu
deklaracja kursorów
Deklaracja typów danych
Deklaracja zmiennych
Błędy zapamiętanych procedur są zapisywane w tabeli
USER_ERRORS słownika danych
Definicja procedur
SELECT *
FROM user_errors;
Definicja funkcji
Ciało pakietu
Definicja kursorów
Definicja typów danych
Definicja zmiennych
Definicja obiektów lokalnych
Copyright © 2014-2015 E. Busłowska
9
Specyfikacja pakietu
10
Ciało pakietu
CREATE [OR REPLACE] PACKAGE BODY
nazwa_pakietu AS [/ IS]
programy_prywatne
ciało_programu1;
ciało_programu2;
ciało_programu3;
...
END [nazwa_pakietu];
/
CREATE [OR REPLACE] PACKAGE
nazwa_pakietu AS [/ IS]
nagłówek_programu1;
nagłówek _programu2;
nagłówek _programu3;
...
END [nazwa_pakietu];
/
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
11
Copyright © 2014-2015 E. Busłowska
12
2
Wywołanie procedury
lub funkcji pakietu
Kompilowanie procedury, funkcji, pakietu
Usuwanie procedury, funkcji, pakietu
EXECUTE
nazwa_pakietu .nazwa_procedury(argumenty)
deklaracja zmiennej
EXECUTE :zmienna:=
nazwa_pakietu .nazwa_funkcji(argumenty)
PRINT zmienna
Copyright © 2014-2015 E. Busłowska
13
ALTER procedure | function nazwa compile;
DROP procedure | function | package body |
package nazwa;
ALTER package nazwa compile package |
body;
Copyright © 2014-2015 E. Busłowska
14
Standardowe pakiety dostarczane przez Oracle
DBMS_OUTPUT – pozwala na wyświetlanie danych w programie wywołującym
DBMS_PIPE – pozwala na tworzenie i zarządzanie potokami
DBMS_RANDOM – służy do generowania liczb losowych
DBMS_ROWID – narzędzia pozwalające na interpretowanie i konwertowanie danych
typu ROWID
DBMS_SESION – narzędzia pozwalające zarządzać bieżącą sesją
DBMS_TRANSACTION – opcje pozwalające sterować transakcjami
DBMS_DEBUG – funkcje znajdowania błędów
DBMS_UTILITY – funkcje pomocnicze
DBMS_DDL – umożliwia stosowanie w PL/SQL określonych instrukcji DDL oraz
poleceń administracyjnych
DBMS_FGA – pozwala na tworzenie własnej taktyki nadzorowania, przez
administratora, przepływu danych
DBMS_SQL – interfejs pozwalający na wykonywanie dynamicznego SQL w PL/SQL
DBMS_PROFILER – sprawdzanie długości trwania wykonywania każdej z linii kodu
DBMS_TYPES – narzędzia dla tworzenia, przechowywania i używania danych,
których baza danych nie jest z góry znana
Copyright © 2014-2015 E. Busłowska
15
3