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

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

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

Bloki anonimowe w PL/SQL

1. ELEMENTY JĘZYKA PL/SQL

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

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

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

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

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

Język PL/SQL Wprowadzenie

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

Deklarowanie kursora

Język PL/SQL Wprowadzenie

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

2 PL/SQL - podstawy Zmienne i stałe Operatory SQL w PL/SQL Instrukcje sterujące... 8

Ćwiczenie 11 PL/SQL. Wprowadzenie do języka PL/SQL

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

PL/SQL. Zaawansowane tematy PL/SQL

15. Funkcje i procedury składowane PL/SQL

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

Procedury i funkcje składowane

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

Bazy danych 2 Laboratorium 2

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

1 Podstawy c++ w pigułce.

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Oracle PL/SQL. Paweł Rajba.

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

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

Język PL/SQL. Rozdział 1. Wprowadzenie do języka PL/SQL

Pakiety podprogramów Dynamiczny SQL

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

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Bloki anonimowe w PL/SQL

Język SQL. Rozdział 2. Proste zapytania

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

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

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Przestrzenne bazy danych Podstawy języka SQL

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

Celem ćwiczenia jest wprowadzeniem do programowaniu w języku PL/SQL. Język PL/SQL umoŝliwia tworzenie programów, przetwarzających dane w bazie danych.

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

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

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

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

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

1 Podstawy c++ w pigułce.

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

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

Podstawy Programowania C++

LibreOffice Calc VBA

Składowane procedury i funkcje

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Technologie baz danych WYKŁAD 7: Wyjątki

Wstęp do programowania. Różne różności

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Oracle11g: Programowanie w PL/SQL

Zaawansowane bazy danych i hurtownie danych semestr I

Oracle PL/SQL. Paweł Rajba.

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

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

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

Oracle PL/SQL. Paweł Rajba.

Systemy GIS Tworzenie zapytań w bazach danych

Pascal - wprowadzenie

Ref. 7 - Język SQL - polecenia DDL i DML

Typy danych w języku PL/SQL

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Oracle PL/SQL. Paweł Rajba.

Indeksy. Indeks typu B drzewo

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawy programowania w języku C

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

Wprowadzenie do języka SQL

Cele. Definiowanie wyzwalaczy

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

Język SQL, zajęcia nr 1

Wykład :45 BD-1 W_3

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wstęp do programowania

Podstawowe części projektu w Javie

Programowanie obiektowe

Powtórka algorytmów. Wprowadzenie do języka Java.

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Zaawansowane bazy danych i hurtownie danych semestr I

Transkrypt:

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

Jest językiem trzeciej generacji (3GL), który udostępnia konstrukty programistyczne, włączając w to deklaracje zmiennych, pętlę, obsługę błędów itd. Obecnie PL/SQL można traktować jako język obiektowy. PL/SQL jest proceduralnym (a czasem obiektowym) rozszerzeniem języka SQL, wywodzącym się z języka Ada. stworzone i udostępnione przez Oracle i przeznaczone do obsługi narzędzi tej firmy PL/SQL co to jest?

PL/SQL 1.0 wprowadzono w 1991 roku, wersja była ograniczona i brakowało w niej wielu funkcji, wypuszczona z wersją serwera bazodanowego 6.0. Kolejna wersja 2.3 udostępniała obsługę procedur i funkcji składowanych. Wersja 8.0 wprowadzenie modelu obiektowo-relacyjnego. Wersje 8.1, 9.0, 9.2, 10.0 to kolejne udoskonalenia języka. Najnowsza wersja to 11.0 Historia, jak już mniej więcej wiemy co to jest

SQL Zapewnia kompletny dostęp do danych. Oznacza to, że można pobrać dowolne dane po pewnym czasie (z pewnym opóźnieniem) i w wielu przypadkach w niedoskonały sposób. Nie ma gwarancji, co do wydajności oraz przede wszystkim aktualności lub dostępności danych. Język deklaratywny, strukturalny do tworzenia zapytań do relacyjnej bazy danych. PL/SQL Pozwala na tworzenie procedur, funkcji, pakietów, wyzwalaczy i bloków anonimowych. Umożliwia przechodzenie w pętli po rekordach i manipulowanie każdym z nich po kolei. W programie PL/SQL można umieszczać polecenia DML, natomiast nie jest możliwe bezpośrednie wykonanie w programie poleceń z grupy DDL (poleceń tworzenia nowych obiektów, np. relacji) i DCL (poleceń sterowania przebiegiem sesji).język nie jest przeznaczony do interakcji z użytkownikiem, stąd brak w nim wielu mechanizmów, obecnych w innych językach. Jednak PL/SQL pozwala na definiowanie programów trwale zapisywanych w bazie danych, tzw. programów składowanych, w postaci funkcji, procedur oraz bibliotek, nazywanych pakietami. PL/SQL a SQL

Przebieg działania

Co to jest blok Podstawowa jednostka w PL/SQL Program składa się przynajmniej z jednego bloku Bloki mogą być zagnieżdżone Bloki mogą być wykonywane tylko raz, bez zapisywania (bloki anonimowe) Bloki można zapisywać w bazie w celu ich późniejszego wykorzystania (bloki nazwane) Bloki obsługują wszystkie instrukcje DML

Struktura bloku DECLARE (nie jest wymagane) deklaracje zmiennych, wyjątki BEGIN wyrażenia SQL i PL/SQL EXCEPTION (nie jest wymagane) obsługa wyjątków END;

Rodzaje bloków PL/SQL - anonimowe - nazwane: - procedury - funkcje - wyzwalacze

Bloki anonimowe Bloki anonimowe nie posiadają nazwy i nie są przechowywane w bazie danych. Można je stworzyć w celu jednorazowego wykonania kodu, są kompilowane przy każdym uruchomieniu programu. Można w nich wywoływać inne programy, ale ich nigdzie nie można wywołać.

Procedury Są to, podobnie jak funkcje i wyzwalacze, bloki posiadające nazwę. Procedury są przechowywane w bazie danych.

Przykładowa procedura

Funkcje Funkcje, w przeciwieństwie do procedur, muszą zwracać wynik.

Przykładowa funkcja

Wywołanie funkcji Do wywołania funkcji można skorzystać z pseudo tabeli DUAL, która ma jeden wiersz i jedną kolumnę oraz nie posiada żadnych danych.

Wyzwalacze Wyzwalacze (trigger) są blokami wykonywanymi w reakcji na określone zdarzenie w bazie danych.

Przykładowy wyzwalacz

Podstawowe składowe języka Identyfikatory Ograniczniki Literały Słowa zarezerwowane

Identyfikatory Służą do nazywania zmiennych, kursorów, funkcji, procedur itd. Zasady tworzenia identyfikatorów: <30 znaków Rozpoczynają się literą Mogą zawierać znaki $,#,_ i cyfry, Nie mogą zawierać znaków przystankowych, odstępów i myślników, Nie mogą zawierać słów zarezerwowanych, Wyjątek to identyfikatory w cudzysłowach - można w nich stosować prawie wszystko.

Ograniczniki +,-,*,/ - operatory matematyczne >,<,<>,=,!= - operatory porównania --, /*, */ - komentarze <<, >> - etykiety % - atrybuty (TYPE) ogranicznik łańcuchów znaków ogranicznik identyfikatorów := - przypisanie, inicjalizacja zmiennej - łączenie łańcuchów znaków

Literały Wartości, które nie są reprezentowane przez identyfikatory, ani nie są wyliczane na podstawie innych wartości: Znakowe: np. abc Liczbowe: 1, 2, 456 Logiczne: TRUE, FALSE Związane z datą, godziną 23-12-2013

Typy danych Typy liczbowe BINARY_INTEGER DEC DECIMAL DOUBLE PRECISION FLOAT INT INTEGER NATURAL NATURALN (not null) NUMBER NUMERIC PLS_INTEGER POSITIVE POSITIVEN (not null) REAL SIGNTYPE SMALLINT Typy znakowe CHAR CHARACTER LONG NCHAR NVARCHAR2 RAW STRING VARCHAR VARCHAR2 Typ logiczny BOOLEAN, literały: TRUE (prawda), FALSE (fałsz) Typy czasowe DATE TIMESTAMP INTERVAL Typy wskaźnikowe REF CURSOR REF object_type PL/SQL obsługuje wszystkie typy SQL oraz wprowadza własne, m. in. boolean i record.

Number(P,S) - przechowuje liczby rzeczywiste oraz całkowite. P - liczba cyfr w liczbie, S - ilość miejsc po przecinku. Char(L) - przechowuje stałą ilość znaków zadeklarowaną jako parametr L. W SQL maksymalnie można przechowywać 256 znaków natomiast w PL/SQL - 32768 znaków. Varchar2(L) - zajmuje tyle miejsca, ile zostanie przypisanych znaków. Parametr L określa maksymalną ilość znaków. Maksymalna długość wynosi 32768 w PL/SQL oraz 4000 w SQL. Raw(L) - typ zachowujący się jak Char (L), jednak służy do przechowywania danych binarnych. Date - przechowuje informacje o wieku, roku, miesiącu, dniu, godzinie, minucie oraz sekundzie. Boolean - typ, który może przyjmować tylko 3 wartości: TRUE, FALSE, NULL. Nie miał swojego odpowiednika w SQL. Typy danych

Struktury sterujące Instrukcje sterujące służą w kodzie źródłowym do kierowania kolejnością wykonywania kolejnych czynności, z których złożony jest dany algorytm.

Sekwencja Sekwencja poleceń wykonywanych w określonym porządku. Każde polecenie kończy się średnikiem. Przykład: DECLARE v_i NUMBER(3) := 0; v_nazwa VARCHAR2(10); BEGIN v_i := v_i + 1; v_nazwa := 'ABC'; v_nazwa := v_nazwa 'DEF'; END;

Selekcja instrukcja IF... THEN If warunek then sekwencja; elsif warunek then sekwencja; else sekwencja end if;

Przykładowa instrukcja IF THEN

Instrukcja CASE case when warunek1 then sekwencja1; when warunek2 then sekwencja2; end case;

Przykładowa instrukcja CASE

Pętla LOOP Pętla LOOP wykonuje się dopóki warunek w klauzuli exit when jest prawdziwy. W przypadku braku warunku wyjścia pętla będzie wykonywać się w nieskończoność lub do czasu natrafienia na błąd.

Pętla WHILE Do czasu aż zmienna jest mniejsza od 20 wykonuje określone czynności.

Pętla FOR Dopóki zmienna o nazwie iterator ma wartość zawartą w zbiorze od 1 do 6 wykonuje dane czynności. Iterator zwiększa się o 1 przy każdym cyklu. Można sprawić by pętla wykonała się od końca dodając klauzulę REVERSE.

Polecenie SELECT INTO SELECT lista_zmiennych INTO nazwa_zmiennej nazwa_rekordu FROM tabela WHERE warunki; SELECT INTO przekazuje wartości uzyskane z bazy (lista_zmiennych) do zmiennych występujących w klauzuli INTO

Zmienne rekordowe Definicja rozpoczyna się od słowa TYPE, następna jest nazwa nowego typu, musimy też pamiętać o dodaniu klauzuli is record. Pomiędzy nawiasami podajemy kolejne zmienne wraz z ich typami, będące składowymi rekordu. Pomiędzy nimi stawiamy przecinki, po ostatniej zmiennej nie stawiamy go. Posiadając zdefiniowaną strukturę rekordu możemy stworzyć zmienną nowo stworzonego typu.

Przykładowy rekord

Obsługa wyjątków Ważnym elementem każdej profesjonalnej aplikacji jest obsługa błędów (wyjątków). W PL/SQL standardowe błędy (wyjątki) mają przyporządkowane nazwy. Oto najczęściej używane nazwy błędów (wyjątków). dup_val_on_index - powtórzenie tej samej wartości w indeksie jednoznacznym, no_data_found - instrukcja SELECT nie zwróciła wartości dla zmiennych w klauzuli INTO, too_many_rows - instrukcja SELECT zwróciła więcej niż jeden wiersz wartości dla zmiennych w klauzuli INTO, zero_divide - dzielenie przez zero, timeout_on_resource - zbyt długie oczekiwanie na zasoby, invalid_cursor - niepoprawna operacja na kursorze, login_denied - niepoprawna nazwa użytkownika/hasło, invalid_number - niepoprawna konwersja na liczbę, storage_error - brak pamięci, value_error - błąd związany z działaniem na wartościach,

DML Data Manipulation Language Zbiór instrukcji języka zapytań (np. SQL) używanych do przetwarzania danych z bazy danych. Są to instrukcje takie jak: INSERT, UPDATE i DELETE.

DML w PL/SQL Zapytanie musi zwrócić jeden rekord. W zapytaniu dodatkowa klauzula INTO, w niej - lista zmiennych prostych, liczba zmiennych musi odpowiadać liczbie wyrażeń w klauzuli select, typy muszą być zgodne - zmienna rekordowa o strukturze zgodnej ze struktura rekordu, odczytywanego przez zapytanie

DML przykład z relacji ZESPOLY rekord, opisuje zespół o nazwie ADMINISTRACJA. Wartość rekordu zostaje zachowana w zmiennej rekordowej v_zespol. Następnie na podstawie wartości pola id_zesp zmiennej v_rekord drugie zapytanie odczytuje sumę płac i liczbę pracowników w zespole ADMINISTRACJA. Wyliczone wartości trafiają do zmiennych prostych v_suma_plac i v_ilu_pracownikow, a następnie zostają wypisane na konsoli

Łatwiejsze wykonanie poniektórych zadań poprzez umożliwienie utworzenia programu, który wykonuje określone operacje na bazie danych Anonimowy blok jest podstawowa jednostka języka pl/sql Blok umożliwia wprowadzenie instrukcji sekwencji, selekcji oraz iteracji W bloku można umieszczać instrukcje DML, ale zabronione jest umieszczanie DDL i DCL Dostepnosc dodatkowej puli mechanizmow, np. instrukcji sterujących Pełna kompatybilność platform dla których oferowany jest SZBD Oracle wynikająca z wykonania na serwerze Zwiększenie wydajności Podsumowanie PL/SQL