Oracle PL/SQL. Paweł Rajba.

Podobne dokumenty
Pakiety podprogramów Dynamiczny SQL

Język PL/SQL Pakiety podprogramów

Język PL/SQL Procedury i funkcje składowane

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Procedury i funkcje składowane

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Oracle PL/SQL. Paweł Rajba.

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Procedury Funkcje Pakiety. Tworzenie procedury

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Zaawansowane bazy danych i hurtownie danych semestr I

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Oracle PL/SQL. Paweł Rajba.

Oracle11g: Programowanie w PL/SQL

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

Wykład 9. Pakiety w języku PL/SQL

15. Funkcje i procedury składowane PL/SQL

Bloki anonimowe w PL/SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Tworzenie raportów XML Publisher przy użyciu Data Templates

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Oracle10g: Programowanie w PL/SQL

Składowane procedury i funkcje

PODSTAWY BAZ DANYCH 13. PL/SQL

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Oracle PL/SQL. Paweł Rajba.

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów

Administracja i programowanie pod Microsoft SQL Server 2000

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Oracle PL/SQL. Paweł Rajba.

Bazy danych, 4. wiczenia

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Oracle PL/SQL. Paweł Rajba.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

SQL 4 Structured Query Lenguage

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Plan wykładu BAZY DANYCH II WYKŁAD 6. Co to są wyjątki? Co to są wyjątki?

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

Administracja i programowanie pod Microsoft SQL Server 2000

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Ćwiczenia 2 IBM DB2 Data Studio

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Systemowe aspekty baz

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Bloki anonimowe w PL/SQL

Instrukcja instalacji aplikacji PlanSoft.org

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

BAZY DANYCH W APLIKACJACH SIECIOWYCH

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

BAZA DANYCH SIECI HOTELI

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Oracle11g: Wprowadzenie do SQL

Tabele wykorzystywane w przykładach

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Systemowe aspekty baz danych

W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc.

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Indeksy. Indeks typu B drzewo

Cele. Definiowanie wyzwalaczy

Technologie baz danych WYKŁAD 7: Wyjątki

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

BAZY DANYCH Cz III. Transakcje, Triggery

Hurtownia Świętego Mikołaja projekt bazy danych

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Przykład połączenie z bazą danych

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Obowiązuje od wersji

1. Wyzwalacze BD (ang. triggers)

1. ELEMENTY JĘZYKA PL/SQL

Obiektowe bazy danych

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Obiektowe bazy danych

Język PL/SQL. Rozdział 2. Kursory

Programowanie obiektów

Bazy Danych i Usługi Sieciowe

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Transkrypt:

Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Zawartość modułu 5 Wprowadzenie Tworzenie i wykonywanie procedur i funkcji Instrukcja RETURN Parametry procedur i funkcji oraz ich przesyłanie Metadane programu Pakiety PL/SQL, pakiety wielokrotnego użycia Zbiory wyników Przeciążanie deklaracji - 2 -

Wprowadzenie Mamy do dyspozycji Procedury Funkcje Pakiety Cechy Unikalne nazwy Składowane w bazie danych Dostępne są metadane (ze słownika danych) - 3 -

Tworzenie procedur Procedurę tworzymy poprzez instrukcję: CREATE [OR REPLACE] PROCEDURE nazwa [(param1 {IN OUT IN OUT} typ DEFAULT expr,... (paramn {IN OUT IN OUT} typ DEFAULT expr] {IS AS} [deklaracje zmiennych] BEGIN... [EXCEPTION...] END [nazwa procedury] - 4 -

Tworzenie funkcji Funkcję tworzymy poprzez instrukcję: CREATE [OR REPLACE] FUNCTION nazwa [(param1 {IN OUT IN OUT} typ DEFAULT expr,... (paramn {IN OUT IN OUT} typ DEFAULT expr] RETURN typ_danych {IS AS} [deklaracje zmiennych] BEGIN... [EXCEPTION...] END [nazwa funkcji] - 5 -

Instrukcja RETURN Służy zwracania wartości Zatrzymuje wykonywania podprogramu Stosujemy RETURN; procedury RETURN wyrażenie; funkcje - 6 -

Wykonywanie procedur lub funkcji Wykonywanie jest na jeden z trzech sposobów: Jako instrukcję bloku PL/SQL Aplikacja apex,inne kawałki kodu Używając EXECUTE SQL*Plus Używając CALL SQL*Plus Przykład: procedury-funkcje-start.txt - 7 -

Parametry procedur i funkcji Przekazywanie parametrów Pozycyjne, Imienne, Mieszane Typy %TYPE, %ROWTYPE Deklarowanie trybów IN (domyślnie), OUT, IN OUT Parametry domyślne Przykład: procedury-funkcje-parametry.txt - 8 -

Kilka uwag Procedury i funkcje są przechowywane w postaci skompilowanej Kod źródłowy jest zapisywany w słownikach Klauzula OR REPLACE powoduje nadpisanie istniejącej wersji Przed i po operacji tworzenia procedury lub funkcji jest wykonywany COMMIT Funkcje nie powinny mieć parametrów typu OUT i IN OUT (do tego są procedury) - 9 -

Metadane podprogramu Mamy cztery perspektywy USER_OBJECTS, ALL_OBJECTS Info o wersji skompilowanej USER_SOURCE, ALL_SOURCE Kody źródłowe Odpalamy zapytania select object_name, object_type, status from user_objects where object_name='sp_znaki'; select text from user_source where name='sp_znaki'; - 10 -

Pakiety PL/SQL Pakiet składa się z dwóch części specyfikacji określa publiczne procedury i funkcje zawiera tylko nagłówki treści zawiera treść metod publicznych może zawierać także procedury i funkcje prywatne Pakiety wprowadzają modularność - 11 -

Deklaracja pakietu Część specyfikacji CREATE [OR REPLACE] PACKAGE nazwa_pakietu {IS AS} [PRAGMA SERIALLY_REUSABLE;] [type_definition] [constant_declaration] [variable_declaration] [exception_declaration] [cursor_declaration] [procedure_header] [function_header] END [nazwa_pakietu] - 12 -

Deklaracja pakietu Część treści CREATE [OR REPLACE] PACKAGE BODY nazwa {IS AS} [PRAGMA SERIALLY_REUSABLE;] [private_declarations] [cursor_body] [public_procedures_implementation] [public_functions_implementation] [BEGIN... // instrukcje ] END [nazwa_pakietu] - 13 -

Pakiety PL/SQL Kilka uwag Nazwa specyfikacji i treści pakietu muszą mieć taką samą nazwę Sekcja zaczynająca się do BEGIN to sekcja inicjalizacyjna (pakietu nie zaczynamy od BEGIN) Deklaracje publiczne mogą być w dowolnej kolejności odwołania mogą być tylko do już zadeklarowanych składn. Najpierw kompilujemy specyfikację, potem treść Specyfikacja może istnieć bez treści (wtedy nie może być deklaracji procedur i funkcji) - 14 -

Pakiety PL/SQL Odwołania do obiektów pakiet.składowa Obiekty prywatne dostępne są tylko w ramach definiowanego pakietu Tworzenie instancji i inicjacja pakietu Przy pierwszym odwołaniu do składowej pakietu, jest on ładowany do pamięci i pozostaje tam na czas sesji Wtedy też wykonywana jest sekcja inicjalizacyjna Przykład: pakiety.txt - 15 -

Zwracanie zbiorów wyników Może mieć miejsce przy zwracaniu wyniku przez funkcję przy przekazaniu parametru typu OUT procedury Może być na dwa sposoby Za pomocą kusorów Za pomocą funkcji tabelowych ten punkt umówimy później przy okazji kolekcji - 16 -

Zwracanie zbiorów wyników Wykorzystanie kursorów może być na 2 sposoby Poprzez użycie słabego kursora SYS_REFCURSOR w typie zwrotnym funkcji lub w typie danych parametru OUT procedury Definiujemy typ REF CURSOR w specyfikacji pakietu i następnie wykorzystujemy j.w. w specyfikacji może być tylko deklaracja typu (nie może być deklaracji zmiennych) Przykład: zbiory-wynikow.txt - 17 -

Funkcje w instrukcjach SQL Funkcje możemy wykorzystywać w: instrukcji SELECT (list kolumn, klazule WHERE, HAVING, GROUP BY, ORDER BY) instrukcji INSERT (klauzula VALUES) instrukcji UPDATE (klauzula SET) Odwołanie [[schemat.]pakiet.]funkcja(p1,...,pn) Przykład: funkcje-instrukcje.txt - 18 -

Przesyłanie parametrów Odbywa się na sposoby przez wartość przez odwołanie (wskaźnik) Zachowanie domyślne IN przez odwołanie OUT, IN OUT przez wartość W przypadku wyjątku kopia (być może zmieniona) jest odrzucana i pierwotna wartość zachowana Można to domyślne zachowanie zmienić używając wskazówki dla kompilatora NOCOPY wtedy przekazywanie jest przez odwołanie (szybsze rozwiązanie) - 19 -

Przesyłanie parametrów Wskazówka NOCOPY Deklaracja parametru param {OUT IN OUT} NOCOPY typ_danych Jest to tylko wskazówka, może zostać przez kompilator zignorowana Parametr nie może elementem tabeli indeksowej (ale może być tabelą indeksową) Używanie NOCOPY zwiększa szybkość przy przekazywaniu dużych obiektów (np. kolekcji) Przykład: parametry-przesylanie.txt - 20 -

Przeciążanie deklaracji Co to jest przeciążanie, każdy wie Przeciążać możemy procedury i funkcje w ramach pakietu Warunki przeciążania różne ilości parametrów różne typy parametrów (int i number w tym kontekście nie są różne) Przykład: procedury-funkcje-przeciazanie.txt - 21 -

Pakiety wielokrotnego użycia Normalnie, uruchomienie pakietu jest przechowywane w pamięci sesji Wraz ze wzrostem liczby użytkowników, wzrasta zużycie pamięci sesji Oznaczenie pakietu jako serially_reusable Powoduje wykonanie pakietu tylko na czas wywołania bazodanowego Stan wykonywalny pakietu dostaje niewielkę pulę pamięci, która po ukończeniu wywołania bazodanowego zostanie zwolniona - 22 -

Pakiety wielokrotnego użycia Składnia PRAGMA SERIALLY_REUSABLE Kilka uwag Deklaracja pragmy musi być zarówno w specyfikacji, jak i w treści Po każdym wykonaniu, zmienne są resetowane, a kursory zamykane Pakiet wielokrotnego użycia nie może zawierać procedur (funkcji), z któych korzystają wyzwalacze Przykład: pakiety-wielokrotne.txt - 23 -