oracle pl/sql - kursy pl/sql pawe‚ rajba pawel@ii.uni.wroc.pl zawarto›†...

Download Oracle PL/SQL - Kursy   PL/SQL Pawe‚ Rajba pawel@ii.uni.wroc.pl   Zawarto›‡ modu‚u 5 Wprowadzenie Tworzenie i wykonywanie procedur i funkcji Instrukcja RETURN

Post on 14-Apr-2018

222 views

Category:

Documents

5 download

Embed Size (px)

TRANSCRIPT

  • Oracle PL/SQLOracle PL/SQL

    Pawe RajbaPawe Rajba

    pawel@ii.uni.wroc.plhttp://www.kursy24.eu/

  • Zawarto moduu 5Zawarto moduu 5

    WprowadzenieTworzenie i wykonywanie procedur i funkcjiInstrukcja RETURNParametry procedur i funkcji oraz ich przesyanieMetadane programuPakiety PL/SQL, pakiety wielokrotnego uyciaZbiory wynikwPrzecianie deklaracji

    Oracle PL/SQL Copyright Pawe Rajba- 2 -

  • WprowadzenieWprowadzenie

    Mamy do dyspozycjiProceduryFunkcjePakiety

    CechyUnikalne nazwySkadowane w bazie danychDostpne s metadane (ze sownika danych)

    Oracle PL/SQL Copyright Pawe Rajba- 3 -

  • Tworzenie procedurTworzenie 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]

    Oracle PL/SQL Copyright Pawe Rajba- 4 -

  • Tworzenie funkcjiTworzenie 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]

    Oracle PL/SQL Copyright Pawe Rajba- 5 -

  • Instrukcja RETURNInstrukcja RETURN

    Suy zwracania wartociZatrzymuje wykonywania podprogramuStosujemy

    RETURN; proceduryRETURN wyraenie; funkcje

    Oracle PL/SQL Copyright Pawe Rajba- 6 -

  • Wykonywanie procedur lub funkcjiWykonywanie procedur lub funkcji

    Wykonywanie jest na jeden z trzech sposobw:Jako instrukcj bloku PL/SQL

    Aplikacja apex,inne kawaki koduUywajc EXECUTE

    SQL*PlusUywajc CALL

    SQL*Plus

    Przykad: procedury-funkcje-start.txt

    Oracle PL/SQL Copyright Pawe Rajba- 7 -

  • Parametry procedur i funkcjiParametry procedur i funkcji

    Przekazywanie parametrwPozycyjne, Imienne, MieszaneTypy %TYPE, %ROWTYPE

    Deklarowanie trybwIN (domylnie), OUT, IN OUT

    Parametry domylnePrzykad: procedury-funkcje-parametry.txt

    Oracle PL/SQL Copyright Pawe Rajba- 8 -

  • Kilka uwagKilka uwag

    Procedury i funkcje s przechowywane w postaci skompilowanej

    Kod rdowy jest zapisywany w sownikachKlauzula OR REPLACE powoduje nadpisanie istniejcej wersjiPrzed i po operacji tworzenia procedury lub funkcji jest wykonywany COMMITFunkcje nie powinny mie parametrw typuOUT i IN OUT (do tego s procedury)

    Oracle PL/SQL Copyright Pawe Rajba- 9 -

  • Metadane podprogramuMetadane podprogramu

    Mamy cztery perspektywyUSER_OBJECTS, ALL_OBJECTS

    Info o wersji skompilowanejUSER_SOURCE, ALL_SOURCE

    Kody rdowe

    Odpalamy zapytaniaselect object_name, object_type, status from user_objects where object_name='SP_ZNAKI';select text from user_sourcewhere name='SP_ZNAKI';

    Oracle PL/SQL Copyright Pawe Rajba- 10 -

  • Pakiety PL/SQLPakiety PL/SQL

    Pakiet skada si z dwch czcispecyfikacji

    okrela publiczne procedury i funkcjezawiera tylko nagwki

    trecizawiera tre metod publicznychmoe zawiera take procedury i funkcje prywatne

    Pakiety wprowadzaj modularno

    Oracle PL/SQL Copyright Pawe Rajba- 11 -

  • Deklaracja pakietuDeklaracja pakietu

    Cz specyfikacjiCREATE [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]

    Oracle PL/SQL Copyright Pawe Rajba- 12 -

  • Deklaracja pakietuDeklaracja pakietu

    Cz treciCREATE [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]

    Oracle PL/SQL Copyright Pawe Rajba- 13 -

  • Pakiety PL/SQLPakiety PL/SQL

    Kilka uwagNazwa specyfikacji i treci pakietu musz mie tak sam nazwSekcja zaczynajca si do BEGIN to sekcja inicjalizacyjna (pakietu nie zaczynamy od BEGIN)Deklaracje publiczne mog by w dowolnej kolejnoci

    odwoania mog by tylko do ju zadeklarowanych skadn.Najpierw kompilujemy specyfikacj, potem treSpecyfikacja moe istnie bez treci (wtedy nie moe by deklaracji procedur i funkcji)

    Oracle PL/SQL Copyright Pawe Rajba- 14 -

  • Pakiety PL/SQLPakiety PL/SQL

    Odwoania do obiektwpakiet.skadowa

    Obiekty prywatne dostpne s tylko w ramach definiowanego pakietuTworzenie instancji i inicjacja pakietu

    Przy pierwszym odwoaniu do skadowej pakietu, jest on adowany do pamici i pozostaje tam na czas sesjiWtedy te wykonywana jest sekcja inicjalizacyjna

    Przykad: pakiety.txtOracle PL/SQL Copyright Pawe Rajba- 15 -

  • Zwracanie zbiorw wynikwZwracanie zbiorw wynikw

    Moe mie miejsceprzy zwracaniu wyniku przez funkcjprzy przekazaniu parametru typu OUT procedury

    Moe by na dwa sposobyZa pomoc kusorwZa pomoc funkcji tabelowych

    ten punkt umwimy pniej przy okazji kolekcji

    Oracle PL/SQL Copyright Pawe Rajba- 16 -

  • Zwracanie zbiorw wynikwZwracanie zbiorw wynikw

    Wykorzystanie kursorw moe by na 2 sposobyPoprzez uycie sabego kursora SYS_REFCURSOR w typie zwrotnym funkcji lub w typie danych parametru OUT proceduryDefiniujemy typ REF CURSOR w specyfikacji pakietu i nastpnie wykorzystujemy j.w.

    w specyfikacji moe by tylko deklaracja typu (nie moe by deklaracji zmiennych)

    Przykad: zbiory-wynikow.txt

    Oracle PL/SQL Copyright Pawe Rajba- 17 -

  • Funkcje w instrukcjach SQLFunkcje w instrukcjach SQL

    Funkcje moemy wykorzystywa w:instrukcji SELECT (list kolumn, klazule WHERE, HAVING, GROUP BY, ORDER BY)instrukcji INSERT (klauzula VALUES)instrukcji UPDATE (klauzula SET)

    Odwoanie[[schemat.]pakiet.]funkcja(p1,...,pN)

    Przykad: funkcje-instrukcje.txt

    Oracle PL/SQL Copyright Pawe Rajba- 18 -

  • Przesyanie parametrwPrzesyanie parametrw

    Odbywa si na sposobyprzez wartoprzez odwoanie (wskanik)

    Zachowanie domylneIN przez odwoanieOUT, IN OUT przez warto

    W przypadku wyjtku kopia (by moe zmieniona) jest odrzucana i pierwotna warto zachowanaMona to domylne zachowanie zmieni uywajc wskazwki dla kompilatora NOCOPY wtedy przekazywanie jest przez odwoanie (szybsze rozwizanie)

    Oracle PL/SQL Copyright Pawe Rajba- 19 -

  • Przesyanie parametrwPrzesyanie parametrw

    Wskazwka NOCOPYDeklaracja parametru

    param {OUT | IN OUT} NOCOPY typ_danychJest to tylko wskazwka, moe zosta przez kompilator zignorowanaParametr nie moe elementem tabeli indeksowej (ale moe by tabel indeksow)Uywanie NOCOPY zwiksza szybko przy przekazywaniu duych obiektw (np. kolekcji)

    Przykad: parametry-przesylanie.txt

    Oracle PL/SQL Copyright Pawe Rajba- 20 -

  • Przecianie deklaracjiPrzecianie deklaracji

    Co to jest przecianie, kady wiePrzecia moemy procedury i funkcje w ramach pakietuWarunki przeciania

    rne iloci parametrwrne typy parametrw (int i number w tym kontekcie nie s rne)

    Przykad: procedury-funkcje-przeciazanie.txt

    Oracle PL/SQL Copyright Pawe Rajba- 21 -

  • Pakiety wielokrotnego uyciaPakiety wielokrotnego uycia

    Normalnie, uruchomienie pakietu jest przechowywane w pamici sesjiWraz ze wzrostem liczby uytkownikw, wzrasta zuycie pamici sesjiOznaczenie pakietu jako serially_reusable

    Powoduje wykonanie pakietu tylko na czas wywoania bazodanowegoStan wykonywalny pakietu dostaje niewielk pul pamici, ktra po ukoczeniu wywoania bazodanowego zostanie zwolniona

    Oracle PL/SQL Copyright Pawe Rajba- 22 -

  • Pakiety wielokrotnego uyciaPakiety wielokrotnego uycia

    SkadniaPRAGMA SERIALLY_REUSABLE

    Kilka uwagDeklaracja pragmy musi by zarwno w specyfikacji, jak i w treciPo kadym wykonaniu, zmienne s resetowane, a kursory zamykanePakiet wielokrotnego uycia nie moe zawiera procedur (funkcji), z ktych korzystaj wyzwalacze

    Przykad: pakiety-wielokrotne.txtOracle PL/SQL Copyright Pawe Rajba- 23 -

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23

Recommended

View more >