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