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

Podobne dokumenty
Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL

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

Oracle PL/SQL. Paweł Rajba.

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

15. Funkcje i procedury składowane PL/SQL

Procedury i funkcje składowane

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

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

PL/SQL. Zaawansowane tematy PL/SQL

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

Pakiety podprogramów Dynamiczny SQL

Składowane procedury i funkcje

Oracle PL/SQL. Paweł Rajba.

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

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

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

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

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

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

PL/SQL. Zaawansowane tematy PL/SQL

Język PL/SQL Pakiety podprogramów

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

Hurtownia Świętego Mikołaja projekt bazy danych

1. ELEMENTY JĘZYKA PL/SQL

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

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

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

Język SQL, zajęcia nr 1

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

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

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.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

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

BAZA DANYCH SIECI HOTELI

Zaawansowane bazy danych i hurtownie danych semestr I

Paweł Cieśla. Dokumentacja projektu

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Obiektowe bazy danych

Oracle PL/SQL. Paweł Rajba.

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Multimedialne bazy danych - laboratorium

Podprogramy. Rozdział 11 Procedury i funkcje składowane

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

Ćwiczenia 2 IBM DB2 Data Studio

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

Język PL/SQL Wprowadzenie

Struktura bazy danych

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

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

Oracle11g: Programowanie w PL/SQL

SQL 4 Structured Query Lenguage

DECLARE VARIABLE zmienna1 typ danych; BEGIN

SQL :: Data Definition Language

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

Procedury Funkcje Pakiety. Tworzenie procedury

ĆWICZENIE Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect).

Laboratorium 3. Odkrywanie reguł asocjacyjnych.

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

Systemowe aspekty baz

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

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

20 kwietnia Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład IX. dr inż.

Podstawy programowania skrót z wykładów:

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Przykład połączenie z bazą danych

Oracle 12c: Nowości w SQL i PL/SQL

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Oracle10g: Programowanie w PL/SQL

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

PL/SQL. Lidia Małkiewicz i Cezary Skubała

Wykład 8. SQL praca z tabelami 5

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

1 Kolekcje Operacje masowe VARRAY NESTED TABLES Tabele asocjacyjne Perspektywy obiektowe 10.

Materiały do laboratorium MS ACCESS BASIC

Systemy GIS Tworzenie zapytań w bazach danych

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

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

Podstawy Programowania C++

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

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

Systemowe aspekty baz danych

Wykład 05 Bazy danych

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Obiektowe bazy danych

BAZY DANYCH Cz III. Transakcje, Triggery

Język PL/SQL Wprowadzenie

Indeksy. Indeks typu B drzewo

1. Wyzwalacze BD (ang. triggers)

Transkrypt:

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 będziemy używać w taki sam sposób, jak wbudowanych funkcji Oracle. Funkcje tworzymy za pomocą instrukcji CREATE FUNCTION. CREATE FUNCTION nazwa_funkcji RETURN typ_zwracanych_danych deklaracje zmiennych kod RETURN wynik; Wywołanie funkcji może nastąpić z poziomu instrukcji SQL, np. SELECT nazwa_funkcji FROM dual; lub z poziomu innego programu PL/SQL. Usunięcie funkcji odbywa się za pomocą instrukcji DROP FUNCTION nazwa;.

CREATE OR REPLACE FUNCTION suma RETURN INT liczba1 INT:=90; liczba2 INT:=100; suma INT; suma:=liczba1+liczba2; RETURN suma;

Użycie parametrów w funkcjach Funkcje oraz procedury mogą mieć parametry. Wyróżniamy trzy typy parametrów: IN - parametr tylko do odczytu, służy do przekazania danych do funkcji lub procedury; OUT - parametr wyjściowy, umożliwia zwrócenie danych przez program; ma wartość NULL do momentu zainicjalizowania; IN OUT - parametr wejściowo/wyjściowy; podczas wywoływania programu służy do przekazania do niego danych, umożliwia zwrócenie danych; używamy, gdy dane wejściowe mają zostać zmienione podczas działania programu.

Parametry wejściowe W funkcjach zazwyczaj używa się tylko parametrów typu IN. Definicja funkcji z uwzględnieniem parametrów wejściowych (IN) ma postać: CREATE FUNCTION nazwa_funkcji (parametr1 IN typ_danych, parametr2 IN typ_danych,...) RETURN typ_zwracanych_danych deklaracje zmiennych kod RETURN wynik; Uwaga. Używając typów CHAR, NUMBER, VARCHAR2 dla parametrów funkcji i procedur nie podajemy zakresu (jest wyliczany na podstawie danych wejściowych i wyjściowych).

Przykład funkcji liczącej średnią arytmetyczną dwóch liczb: CREATE OR REPLACE FUNCTION srednia (liczba1 IN NUMBER, liczba2 IN NUMBER) RETURN NUMBER srednia NUMBER; srednia:=(liczba1+liczba2)/2; RETURN srednia; Wywołanie funkcji srednia: SELECT srednia(1,2) FROM dual;

Przykład funkcji, która pobiera ciąg reprezentujący kod pocztowy i zwraca wynik w formacie 99-999: CREATE OR REPLACE FUNCTION kod_pocztowy (kod IN char) RETURN char RETURN substr(kod,1,2) - substr(kod,3); Wywołanie funkcji kod: SELECT kod_pocztowy( 56009 ) FROM dual;

Tablice i typ rekordowy W PL/SQL można definiować złożone typy danych (np. tablice, rekordy), w oparciu o typy bazowe (skalarne). Definicja typu tablicowego: tablica o zadeklarowanym maksymalnym rozmiarze: VARRAY(n) OF typ danych; aby zadeklarować tablicę nie określając maksymalnego rozmiaru, używamy konstrukcji TABLE OF typ danych, np. DECLARE TYPE tabela1 TABLE OF VARCHAR2(30); TYPE tabela2 VARRAY(5) OF INTEGER; tab1 tabela1; tab2 tabela2; tab1 := tabela1( IiESP, MatSP, IDSP ); tab2 := tabela2(1, 2, 3, 4, 5); tab1(2):= MatSD ; tab2(1):=7;

Tablice w PL/SQL Tablice typu VARRAY(n) będziemy nazywali varray, natomiast tablice typu TABLE - tabelami zagnieżdżonymi. Zanim zostanie zainicjalizowana za pomocą konstruktora tablica, varray lub tabela zagnieżdżona, ma wartość NULL (tzn. cała kolekcja ma wartość NULL, a nie jej poszczególne elementy). Konstruktor to wbudowana funkcja, o nazwie takiej samej, jak nazwa typu, która tworzy kolekcję z elementów do niej przekazanych. DECLARE TYPE tabela1 TABLE OF VARCHAR2(30);// definicje TYPE tabela2 VARRAY(5) OF INTEGER;// typów tab1 tabela1; tab2 tabela2; tab1 := tabela1( IiE, Mat, ID ); //konstruktor tab2 := tabela2(1, 2, 3, 4, 5); //konstruktor

Tablice w PL/SQL Dobrze jest inicjalizować kolekcję w momencie jej deklaracji: DECLARE TYPE ListaKursow TABLE OF VARCHAR2(16); kursy ListaKursow := ListaKursow( Mat 1111, Hist 3100, Biol 2005 ); Można także stworzyć pustą kolekcję (ale NOT NULL), w tym celu wywołujemy konstruktor bez argumentów: DECLARE TYPE Klient VARRAY(100) OF VARCHAR2(16); vip Klient := Klient();//inicjalizujemy pusta tablicę varray IF vip NOT NULL THEN...// warunek daje TRUE... END IF;