Bloki anonimowe w PL/SQL

Wielkość: px
Rozpocząć pokaz od strony:

Download "Bloki anonimowe w PL/SQL"

Transkrypt

1 Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia pisanie bloków programów, funkcji, procedur,... Możliwości, jakie daje język PL/SQL to: korzystanie z pętli oraz instrukcji warunkowych; dostęp do danych w plikach; poprawienie wydajności bazy danych; tworzenie rozbudowanych programów, do wykonania zadań niemożliwych do zrealizowania za pomocą samego SQL-a; obsługa błędów i wyjatków. W języku PL/SQL można tworzyć cztery rodzaje programów: 1. bloki anonimowe; 2. procedury składowane; 3. wyzwalacze; 4. funkcje. Bloki anonimowe w PL/SQL W języku PL/SQL można tworzyć bloki anonimowe, nie posiadające nazwy. Nie są zapisywane w bazie danych. Można ich używać w celu jednorazowego wykonania kodu. deklaracje zmiennych kod wykonywalny W poniższym przykładzie każdemu pracownikowi w tabeli employee dajemy podwyżkę o 100$. kwota NUMBER(4); kwota:=100; UPDATE employee SET salary=salary+kwota; Deklaracje zmiennych i stałych Zmienne i stałe deklarujemy w sekcji bloku anonimowego. Deklaracja zmiennej ma postać: zmienna typ_danych; Deklaracja stałej: stala1 CONSTANT typ_danych := wartość; Przykładowa sekcja deklaracji: liczba1 NUMBER(4); liczba2 INT :=90; liczba3 INT NOT NULL :=0; tekst1 VARCHAR2(30); data1 DATE default SYSDATE; stala1 CONSTANT CHAR(5) := tekst ; Użycie w deklaracji zmiennej instrukcji:=wyrażenie umożliwia inicjalizację wartości zmiennej w przeciwnym razie zmiennej jest przypisywane NULL. Do inicjalizacji wartości zmiennej zamiast operatora := można użyć klauzuli DEFAULT. Polecenia SQL w programach PL/SQL W kodzie programu PL/SQL można używać instrukcji INSERT, UPDATE, DELETE podobnie, jak w języku SQL. Instrukcji SELECT używamy łacznie z klauzulą INTO.

2 Polecenia SQL w programach PL/SQL Polecenia SQL w programach PL/SQL W kodzie programu PL/SQL można używać instrukcji INSERT, UPDATE, DELETE podobnie, jak w języku SQL. Instrukcji SELECT używamy łacznie z klauzulą INTO. Przykład: użycie UPDATE w bloku anonimowym: kwota NUMBER(5):=200; dzial INT; dzial:=90; UPDATE employees SET salary=salary+kwota WHERE department_id=dzial; W kodzie programu PL/SQL można używać instrukcji INSERT, UPDATE, DELETE podobnie, jak w języku SQL. Instrukcji SELECT używamy łacznie z klauzulą INTO. Przykład: użycie INSERT w bloku anonimowym: id char(2); nazwa varchar2(40); region number:=1; nazwa:= Poland ; id:= PL ; INSERT INTO countries(country_id,country_name,region_id) VALUES ( id,nazwa,region); Instrukcji DELETE używa się analogicznie. W przypadku SELECT musimy zastosować klauzulę INTO. Uwaga. Zapytanie SELECT w tym przypadku musi zwracać zawsze tylko jeden wiersz. W klauzuli INTO podajemy listę zmiennych, do których przypisywane są wartości z kolejnych pól zwracanych przez SELECT. Liczba i typy zmiennych muszą odpowiadać liczbie i typom wyrażeń zwracanych przez SELECT. 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 Oracla. Funkcje tworzymy za pomocą instrukcji CREATE FUNCTION. CREATE FUNCTION nazwa_funkcji RETURN typ_zwracanych_danych IS 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;.

3 Użycie parametrów w funkcjach CREATE OR REPLACE FUNCTION suma RETURN INT IS liczba1 INT:=90; liczba2 INT:=100; suma INT; suma:=liczba1+liczba2; RETURN suma; 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 IS 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). Definicja funkcji liczącej średnią dwóch liczb: CREATE OR REPLACE FUNCTION srednia (liczba1 IN NUMBER, liczba2 IN NUMBER) RETURN NUMBER IS srednia NUMBER; srednia:=(liczba1+liczba2)/2; RETURN srednia; Wywołanie funkcji srednia: SELECT srednia(1,2) FROM dual;

4 Instrukcje sterujace języka PL/SQL Instrukcja przypisania := zmienna :=wyrażenie; np. kwota:=100; akt_data:=sysdate; Instrukcje warunkowe Instrukcja warunkowaif...then...end IF. Składnia instrukcji IF: IF warunek THEN instrukcje; ELSIF warunek THEN instrukcje; ELSE instrukcje END IF; Jeżeli warunek podany w wyrażeniu IF jest spełniony, wykonywany jest blok instrukcji występujący za THEN. W przeciwnym przypadku i gdy spełniony jest warunek wyrażenia ELSIF, wykonywany jest blok instrukcji występujący po tym wyrażeniu. Jeżeli ten warunek nie jest spełniony, wykonywane są instrukcje z bloku ELSE. Uwaga. Użycie klauzul ELSIF oraz ELSE nie jest wymagane. Przy testowaniu i uruchamianiu aplikacji składających się z kodu PL/SQL wygodnie jest pobierać dane do testowania z klawiatury i wypisywać informacje o przebiegu obliczeń na ekran. Realizuje się to za pomocą instrukcji: DBMS_OUTPUT.Put_line(wyrażenie_napisowe); Instrukcja warunkowa CASE test INT; wynik VARCHAR2(10); test:=1; IF test<0 THEN wynik:= ujemna ; ELSIF test<=2 THEN wynik:= przedział [0,2] ; ELSE wynik:= większe od 2 ; END IF; dbms_output.put_line(wynik); Instrukcja CASE występuje w dwóch formach. Użycie CASE z wyszukiwaniem, jak poniżej powoduje, że sprawdzane są kolejno warunki w klauzulach WHEN, do momentu natrafienia na taki, który będzie spełniony. Wykonywany będzie wówczas odpowiedni blok instrukcji. Pozostałe warunki nie są sprawdzane. Jeżeli żaden warunek nie jest spełniony, wykonywane są instrukcje z klauzuli ELSE (o ile taka klauzula istnieje). CASE WHEN warunek1 THEN instrukcje1; WHEN warunek2 THEN instrukcje2;... ELSE instrukcje; END CASE;

5 Instrukcja warunkowa CASE Użycie CASE: i NUMBER(1) := 3; CASE WHEN i=1 THEN DBMS_OUTPUT.PUT_LINE( i wynosi 1 ); WHEN i>2 THEN DBMS_OUTPUT.PUT_LINE( i jest większe od 2 ); ELSE DBMS_OUTPUT.PUT_LINE( i wynosi i); END CASE; Druga forma instrukcji CASE sprawdza, czy wartość danego wyrażenia (zwanego selektorem) jest równa jednemu z wymienionych wyrażeń. Jeżeli tak, to wykonywane są odpowiednie instrukcje. Jeżeli wartość wyrażenia nie zostanie dopasowana, wykonywana jest klauzula ELSE (o ile występuje). CASE selektor WHEN wyrażenie1 THEN instrukcje1; WHEN wyrażenie2 THEN instrukcje2;... ELSE instrukcje; END CASE; Pętle. Pętla LOOP Pętle LOOP jest definiowana przy użyciu klauzul LOOP i END LOOP. Aby zakończyć działanie pętli LOOP, musimy podać warunek wyjścia: albo korzystając z klauzuli EXIT WHEN albo stosując instrukcję IF z klauzulą EXIT. Przykład pętli LOOP: i INT; i:=1; LOOP dbms_output.put_line( i= TO_CHAR(i)); EXIT WHEN i=10; i:=i+1; END LOOP; Pętla WHILE Pętli WHILE używamy aby instrukcja (lub blok instrukcji) była wykonywana, dopóki spełniony jest warunek pętli. WHILE warunek LOOP instrukcje END LOOP Definiując warunek w pętli WHILE należy pamiętać, że pętla będzie wykonywana tak długo, jak długo warunek określony w pętli będzie spełniony. Aby uniknąć pętli nieskończonej, należy umieścić w ciele pętli kod odpowiedzialny za zmianę tego warunku na fałszywy. Uwaga. Działanie pętli WHILE można również przerwać, stosując klauzulę EXIT WHEN.

6 Pętla FOR Podstawowe typy danych w PL/SQL Pętli FOR używamy, gdy znamy liczbę iteracji. FOR iterator IN 1..n LOOP instrukcje END LOOP Zmienna iterator użyta do zdefiniowania pętli FOR nie jest deklarowana. Jej zasięg ogranicza się tylko do pętli. Nie można się do niej odnosić poza blokiem pętli. Domyślnie podaje się najpierw mniejszą, a potem większą z wartości zakresu iteratora, którego wartość w każdej iteracji jest zwiększana o 1. Aby to odwrócić, należy zdefiniować pętlę z opcją REVERSE: FOR iterator IN REVERSE 1..n LOOP END LOOP. NUMBER[(precision,scale)]: przechowuje liczby zarówno stałoprzecinkowe, jak zmiennoprzecinkowe. Parametr precision określa ilość cyfr całej liczby, parametr scale liczbę miejsc po przecinku. Zakres parametru precision wynosi 38 (domyślnie 38), skala może być z przedziału od -84 do 127(domyślnie 0). Liczbę całkowitą definiujemy następująco: NUMBER(p) lub NUMBER(p,0). Można też użyć podtypu INT. Liczby stałoprzecinkowe definiujemy podając obydwa parametry, liczby zmiennoprzecinkowe - tylko NUMBER, bez parametrów. Podstawowe typy danych w PL/SQL CHAR(n) - typ znakowy stałej długości, n musi być z zakresu od 1 do Jeżeli nie zdefiniujemy zakresu, domyślnie przyjmowane jest n=1. VARCHAR2(n) - typ znakowy zmiennej długości, n musi być określone, zakres od 1 do BOOLEAN - typ logiczny, przechowuje tylko wartości TRUE, FALSE, i NULL (która odpowiada brakowi wartości lub wartości nieokreślonej). Na zmiennych typu BOOLEAN można wykonywać tylko operacje logiczne. DATE - przechowuje datę oraz czas. Tablice i typ rekordowy W PL/SQL można definiować własne typy danych (np. tablice, rekordy), w oparciu o typy bazowe. 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. TYPE tabela1 IS TABLE OF VARCHAR2(30); TYPE tabela2 IS 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;

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. TYPE tabela1 IS TABLE OF VARCHAR2(30);// definicje TYPE tabela2 IS 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: TYPE ListaKursow IS 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: TYPE Klient IS VARRAY(100) OF VARCHAR2(16); vip Klient := Klient();//inicjalizujemy pusta tablicę varray IF vip IS NOT NULL THEN...// warunek daje TRUE... END IF; Metody kolekcji Przy używaniu kolekcji, można wykorzystać poniższe metody, aby ułatwić pracę z kolekcjami i uczynić kod bardziej czytelnym: EXISTS COUNT LIMIT FIRST i LAST PRIOR i NEXT EXTEND TRIM DELETE Metoda kolekcji to wbudowana funkcja lub procedura operująca na kolekcji. Aby się do niej odwołać, używamy notacji kropkowej: nazwa_kolekcji.metoda[(parametry)] Uwaga. jeżeli kolekcja jest NULL, to każda metoda poza EXISTS wywołuje wyjątek (COLLECTION_IS_NULL). EXISTS EXISTS(n) zwraca TRUE, jeżeli n-ty element kolekcji istnieje (FALSE w każdym innym przypadku, czyli też, jak indeks jest spoza zakresu), np. IF kursy.exists(i) THEN kursy(i) := nowy_kurs; END IF; Można użyć np., do rzadkich tablic zagnieżdżonych. COUNT COUNT zwraca liczbę elementów, które aktualnie zawiera kolekcja, np.: IF projekty.count = 25 THEN... lub jako zakres pętli: FOR i IN 1..kursy.COUNT LOOP... COUNT jest użyteczne, bo aktualny rozmiar tabeli nie zawsze jest znany. Uwaga. Dla tablic varray, COUNT jest zawsze równe LAST. Dla tabel zagnieżdżonych, COUNT zazwyczaj jest równe LAST, ale, jeżeli wykasujemy elementy za środka tabeli, to wówczas COUNT będzie mniejsze niż LAST (COUNT nie zlicza wykasowanych elementów).

8 LIMIT Dla tablic varray, LIMIT określa maksymalny rozmiar (czyli liczbę elementów, które może przechować) danej tablicy. FIRST i LAST Zwracają pierwszy i ostatni(czyli najmniejszy i największy) indeks w kolekcji. Jeżeli kolekcja jest pusta, zwracają NULL. Można wykorzystać FIRST i LAST do określenia zakresu pętli (pod warunkiem, że każdy element z tego zakresu istnieje): FOR i IN kursy.first..kursy.last LOOP... PRIOR(n) i NEXT(n) - używamy do iterowania po elementach kolekcji. PRIOR(n) zwraca indeks elementu poprzedzającego element o indeksie n, NEXT(n) - indeks kolejnego. Jeżeli dany element nie istnieje, obie metody zwracają NULL. Można użyć PRIOR lub NEXT do przeglądania np. tabeli zagnieżdżonej, z której niektóre elementy zostały wykasowane: i := kursy.first; //indeks pierwszego elementu WHILE i IS NOT NULL LOOP wykonujemy operacje na kursy(i) i := kursy.next(i); //pobieramy indeks kolejnego END LOOP; Zwiększanie rozmiaru kolekcji: metoda EXTEND Procedura ma trzy formy: EXTEND dodaje pusty element do kolekcji (na końcu); EXTEND(n) dodaje n pustych elementów do kolekcji; EXTEND(n,i) dodaje n kopii i-tego elementu. Np., dodajemy pięć razy kopię pierwszego elementu do tabeli zagnieżdżonej: kursy.extend(5,1); uwaga. EXTEND nie można użyć do kolekcji będącej NULL. EXTEND bierze pod uwagę także wykasowane elementy, więc w poniższym kodzie, indeks ostatniego elementu w tabeli to 4, a nie 3. TYPE ListaKursow IS TABLE OF VARCHAR2(10); kursy ListaKursow; kursy := ListaKursow( Biol, Mat, Alg ); kursy.delete(3); //kasujemy element nr 3 /* PL/SQL trzyma miejsce dla elementu nr 3, zatem kolejna instrukcja odnosi się do elementu 4, a nie do 3*/ kursy.ext //dodajemy jeden pusty element kursy(4) := Fiz ;//element 4 istnieje Zmniejszanie rozmiaru kolekcji TRIM. Procedura ma dwie formy: TRIM usuwa element z końca kolekcji; TRIM(n) usuwa n elementów z końca kolekcji. Np., usuwanie trzech ostatnich elementów z tabeli zagnieżdżonej kursy: kursy.trim(3); Uwaga. jeżeli n jest spoza zakresu, TRIM(n) zwraca wyjątek (SUBSCRIPT_BEYOND_COUNT). TRIM bierze pod uwagę wykasowane elementy.

9 Kasowanie elementów tabel zagnieżdżonych DELETE. Procedura ma trzy formy: DELETE usuwa wszystkie elementy z kolekcji. DELETE(n) usuwa n-ty element (o ile istnieje). DELETE(m,n) usuwa elementy z zakresu od m do n. kursy.delete(2); // kasuje element 2 kursy.delete(7,7); // kasuje element 7 kursy.delete(6,3); // nic nie robi kursy.delete(3,6); // usuwa elementy od 3 do 6 Uwaga. Nie można kasować elementów w tablicach varray (są "gęste", tzn. nie można tworzyć dziur). PL/SQL trzyma miejsce dla wykasowanych elementów, wykasowany element można prosto zastąpić nowym, wystarczy mu przypisać nową wartość. Tablice i typ rekordowy Typem rekordowym (rekordem) nazywamy złożoną strukturę danych, której składowe, zwane polami, mogą należeć do różnych typów. Definicję typu rekordowego umieszczamy w sekcji bloku: TYPE nazwa IS RECORD( lista deklaracji pól rekordu ); Np.: rekord do przechowywania danych samochodu: TYPE samochod IS RECORD( marka VARCHAR2(30), rocznik INT, cena NUMBER(10) ); Zmienną rekordową deklarujemy następująco: moje_auto samochod; Odwołując się do pól rekordu używamy notacji kropkowej, np. moje_auto.marka Atrybuty %TYPE i %ROWTYPE Atrybuty %TYPE i %ROWTYPE Atrybutu %TYPE można użyć, aby zadeklarować zmienną, której typ zostanie nadany na podstawie typu danych kolumny w tabeli. Jest to użyteczne, jeżeli zmienna ma za zadanie przechowywać wartości z okreslonej kolumny tabeli. Dla przykładu, aby zdefiniować zmienną v_last_name, która będzia miała taki sam typ danych, jak kolumna last_name w tabeli employee, należy użyć notacji kropkowej oraz atrybutu %TYPE: v_last_name employee.last_name%type; Podejście takie ma dwie zalety. Po pierwsze, nie musimy znać dokładnego typu danych kolumny last_name. Po drugie, jeżeli zmienimy w bazie typ danych kolumny last_name, to automatycznie zmieni się typ zmiennej v_last_name. Atrybut%ROWTYPE umożliwia zadeklarowanie zmiennej rekordowej, reprezentującej wiersz tabeli. Taki rekord może przechowywać wiersz wybrany z tabeli lub kursora. Pola rekordu mają takie same nazwy i typy danych, jak odpowiadające im kolumny. Dla przykładu, zadeklarujemy rekord dept_rec. Pola tego rekordu mają takie same nazwy i typy danych, jak kolumny w tabeli department: dept_rec department%rowtype; Aby odwołać się do pól rekordu, używamy notacji kropkowej: v_deptid := dept_rec.dept_id;

10 Kursory Kursory Każde polecenie SQL, umieszczone w programie PL/SQL, w trakcie wykonania zostaje skojarzone z obszarem pamięci (tzw. obszarem roboczym), w którym przechowywane są informacje o przetwarzanym poleceniu: m.in. status wykonania polecenia i zbiór odczytanych z bazy danych rekordów (w przypadku zapytania). Dostęp w programie PL/SQL do tego obszaru pamięci jest możliwy za pomocą specjalnej struktury, tzw. kursora. Kursor umożliwia: nadanie nazwy obszarowi roboczemu, dostęp do niego, pobranie z niego danych, kontrolę procesu przetwarzania danych. Rodzaje kursorów: jawne (explicit) - są deklarowane przez programistę i służą do odczytu zbioru rekordów z bazy danych, niejawne (implicit) - tworzone automatycznie dla każdego polecenia UPDATE, INSERT, DELETE i SELECT INTO, jakie zostaje umieszczone w programie. Przetwarzając kursor musimy wykonać cztery operacje: zadeklarować kursor, otworzyć go, pobrać wiersze, zamknąć kursor. Pętla kursorowa CURSOR moj_kursor IS SELECT * FROM employee WHERE dept_no= 000 ; osoba employee%rowtype; OPEN moj_kursor; FETCH moj_kursor INTO osoba; dbms_output.put_line( Dane osoby: osoba.full_name); CLOSE moj_kursor; Użycie petli kursorowej umożliwia pobranie kolejnych rekordów z kursora. Nie ma konieczności otwierania ani zamykania kursora (odpowiada za to pętla), np. CURSOR moj_kursor IS SELECT * FROM employee WHERE dept_no= 000 ; FOR osoba IN moj_kursor LOOP dbms_output.put_line( Dane osoby: osoba.full_name); END LOOP; Zmienna wierszowa osoba jest deklarowana niejawnie, jest widoczna tylko wewnątrz pętli kursorowej. Przechowuje dane kolejno pobranych rekordów z kursora.

11 Atrybuty kursora Atrybuty kursora określają jego właściwości. ISOPEN zwraca true, jeżeli kursor jest otwarty. ROWCOUNT zwraca liczbę wierszy, które zostały już pobrane z kursora. NOTFOUND sprawdza, czy w kursorze pozostały jeszcze jakieś wiersze. Jeżeli kursor nie zawiera już żadnych danych, to zwraca true, jeżeli w kursorze pozostał jeszcze jakiś wiersz, zwraca false. FOUND sprawdza, czy w kursorze pozostały jeszcze jakieś dane, zwraca true jeżeli tak, false przeciwnie. CURSOR kursor1 IS SELECT * FROM countries; kraj countries%rowtype; ile INT; OPEN kursor1; IF kursor1%isopen THEN Dbms_Output.put_line( otwarty ); END IF; FETCH kursor1 INTO kraj; ile:=kursor1%rowcount; CLOSE kursor1; Dbms_Output.put_line(ile); Kursory sparametryzowane Kursory sparametryzowane Poniższy kod wyświetla id oraz nazwę każdego kraju z regionu nr 1. CURSOR kraje1 IS SELECT * FROM countries WHERE region_id=1; FOR kraj IN kraje1 LOOP Dbms_Output.put_line( kraj.country_id kraj.country_name); END LOOP; Chcemy zmienić id regionu w warunku WHERE kursora, aby mieć możliwość wyboru krajów także z innych regionów. W tym celu można użyć kursora sparametryzowanego. CURSOR kraje2(id INT) IS SELECT * FROM countries WHERE region_id =id; FOR kraj IN kraje2(2) LOOP Dbms_Output.put_line( kraj.country_id kraj.country_name); END LOOP; Kursor kraje2 jest kursorem sparametryzowanym, z parametrem id.

12 Kursory sparametryzowane Możliwe jest określenie więcej niż jednego parametru kursora, np.: CURSOR c1 (dzial CHAR, zarobki NUMBER) IS SELECT * FROM employee WHERE dept_no=dzial AND salary >=zarobki; Używając kursora, należy przekazać wartości wszystkich parametrów, np. otwarcie kursora c1: OPEN c1( 100,2500); Można określić wartości domyślne dla parametrów kursora: CURSOR c1 (dzial CHAR, zarobki NUMBER DEFAULT 2000) IS SELECT * FROM employee WHERE dept_no=dzial AND salary >=zarobki;

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

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

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 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

Bardziej szczegółowo

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów Plan wykładu Kursory: deklaracja, otwieranie, pobieranie danych, zamykanie Kursory: atrybuty Kursory: pętle, rekordy Kursory z parametrami BAZY DANYCH II WYKŁAD 4 dr inż. Agnieszka Bołtuć Co to jest kursor?

Bardziej szczegółowo

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

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

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

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

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH Plan wykładu 2 TWORZENIE APLIKACJI BAZODANOWYCH Wykład 2: Wprowadzenie do PL/SQL: bloki anonimowe, zmienne, kursory Wprowadzenie do PL/SQL Bloki Podstawowe składowe języka Zmienne i stałe Kursory Małgorzata

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych Plan wykładu BAZY DANYCH II WYKŁAD 3 Zasięg zmiennych Zmienne powiązane Instrukcje warunkowe Pętle Pobieranie danych SQL w PL/SQL Rekordy dr inż. Agnieszka Bołtuć Zasięg zmiennych Zmienna jest dostępna

Bardziej szczegółowo

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

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo

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

Język PL/SQL. Rozdział 2. Kursory Język PL/SQL. Rozdział 2. Kursory Deklarowanie kursora, otwieranie kursora, pobieranie z kursora, zamykanie kursora, zmienne kursorowe, wyrażenie CURSOR, kursory niejawne. 1 Kursor jawny Każde zapytanie

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone Plan wykładu Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone BAZY DANYCH II WYKŁAD 5 dr inż. Agnieszka Bołtuć Kolekcje Tablice asocjacyjne Używane w celu gromadzenia danych tego samego typu, Rekordy

Bardziej szczegółowo

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

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu Procedury składowane Kolejnym typem programu języka PL/SQL są procedury składowane. Procedury mogą posiadać parametry typu IN, OUT lub IN OUT. Umożliwiają wykonanie operacji na danych w bazie, mogą też

Bardziej szczegółowo

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

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka

Bardziej szczegółowo

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

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL; Kursory Każde zapytanie SQL umieszczone w programie PLSQL jest wykonywane w tzw. obszarze roboczym lub inaczej obszarze kontekstu. PLSQL wykorzystuje ten obszar do przechowywania danych otrzymanych w wyniku

Bardziej szczegółowo

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

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Zmienne i stałe Instrukcje sterujące Wykorzystanie SQL w PL/SQL Kursory Wyjątki Projekt fizyczny bazy danych Braki projektu

Bardziej szczegółowo

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Cheatsheet PL/SQL Andrzej Klusiewicz  1/9 Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego,

Bardziej szczegółowo

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

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2) Kursor jawny Każde zapytanie SQL umieszczone w programie PL/SQL może zwrócić zero, jedną bądź wiele krotek. Aby efektywnie przetworzyć krotkizwrócone przez zapytanie korzystamy z kursorów. Kursor jest

Bardziej szczegółowo

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.

Bardziej szczegółowo

1. ELEMENTY JĘZYKA PL/SQL

1. ELEMENTY JĘZYKA PL/SQL 1. ELEMENTY JĘZYKA PL/SQL Aplikacje korzystające z PL/SQL będącego proceduralnym rozszerzeniem SQL mogą wykonywać procedury i funkcje języka PL/SQL składowane w bazie danych oraz wysyłać własne programy

Bardziej szczegółowo

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

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.

Bardziej szczegółowo

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

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora Kursor Rozdział 10a Kursory Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, zmienne kursorowe, wyrażenie CURSOR Każde zapytanie SQL umieszczone

Bardziej szczegółowo

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

Październik 2015. Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż. 1/40 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Październik 2015 2/40 Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Wykorzystanie 3/40 Projekt

Bardziej szczegółowo

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

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

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

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

Składowane procedury i funkcje

Składowane procedury i funkcje Składowane procedury i funkcje Procedury i funkcje są zestawem poleceń SQL, które są przechowywane na serwerze (tak jak dane w tablicach). Istnieją sytuacje, kiedy procedury i funkcje są szczególnie przydatne.

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

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

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1 Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor

Bardziej szczegółowo

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

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków... Plan wykładu Spis treści 1 Kursory 1 2 Wyjątki 4 2.1 Wyjątki predefiniowane............................. 4 2.2 Wyjątki niezdefiniowane wcześniej....................... 5 2.3 Definiowanie własnych wyjątków........................

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 9 Kolekcje Operacje na kolekcjach Testowanie kolekcji Kolekcje w bazie danych Funkcje tabelaryczne Kolekcje wielopoziomowe - 2 -

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 3 Rekordy Tabele indeksowe asocjacyjne - 2 - Rekordy Co to jest rekord? Rodzaje rekordów Rekordy użytkownika Rekordy tabelowe Rekordy

Bardziej szczegółowo

Deklarowanie kursora

Deklarowanie kursora Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor

Bardziej szczegółowo

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

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe. Wprowadzenie do języka PL/SQL Język PL/SQL Wprowadzenie Język PL/SQL to rozszerzenie SQL o elementy programowania proceduralnego i obiektowego. PL/SQL umożliwia wykorzystanie: zmiennych i stałych struktur

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

PL/SQL. Lidia Małkiewicz i Cezary Skubała 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

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

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

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego Oracle Developer Suite Budowa aplikacji użytkownika końcowego Składniki pakietu Oracle Developer Suite Oracle Forms Builder formularze (aplikacje dostępne z poziomu przeglądarki internetowej, model 3-warstwowy)

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

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

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. 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

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

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.

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. PROCEDURY 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. \df Aby wyświetlić wszystkie funkcje z argumentami

Bardziej szczegółowo

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

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.

Bardziej szczegółowo

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

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń PL/SQL Część 1 Bloki PL/SQL Piotr Medoń Cele Zapoznanie się z podstawowymi typami PL/SQL Zapoznanie się z blokiem PL/SQL Zapoznanie się z instrukcjami sterującymi wykonaniem 2 Blok PL/SQL Struktura bloku

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Ważne informacje Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I WYKŁAD 1: Wprowadzenie do przedmiotu, proceduralny język SQL 1. Sylabus w USOS ie: Ogólny

Bardziej szczegółowo

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

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, Programowanie w SQL definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, kontynuacja działania od instrukcji za podaną etykietą GOTO etykieta, wyjście bezwarunkowe

Bardziej szczegółowo

Pakiety podprogramów Dynamiczny SQL

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wyzwalacze. Anna Fiedorowicz Bazy danych 2 Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

Język PL/SQL Wprowadzenie

Język PL/SQL Wprowadzenie Język PL/SQL Wprowadzenie Koncepcja języka, zmienne i stałe, typy zmiennych, nadawanie wartości zmiennym, instrukcje warunkowe, pętle, sterowanie przebiegiem programu 1 Wprowadzenie do języka PL/SQL Język

Bardziej szczegółowo

Kursory - pobieranie danych z baz danych do programów PL/SQL

Kursory - pobieranie danych z baz danych do programów PL/SQL Kursory - pobieranie danych z baz danych do programów PL/SQL Rozważania będą dotyczyć sposobów pobierania danych z baz danych do programów przechowywanych w pamięci. Interakcja języka PL/SQL z językiem

Bardziej szczegółowo

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

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz Systemy typu klient-serwer (jeden serwer) Jednorodna rozproszona baza (kilka serwerow, jeden system zarzadzania baza ) Niejednorodna

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku Plan wykładu BAZY DANYCH II WYKŁAD 2 Bloki, struktura, sekcje Bloki anonimowe Tworzenie i uruchamianie Identyfikatory Literały Typy danych dr inż. Agnieszka Bołtuć Bloki Struktura bloku W programach pisanych

Bardziej szczegółowo

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

Oracle11g: Programowanie w PL/SQL

Oracle11g: Programowanie w PL/SQL Oracle11g: Programowanie w PL/SQL OPIS: Kurs pozwala zrozumieć zalety programowania w języku PL/SQL. Studenci uczą się tworzyć bloki kodu wykonywanego po stronie serwera, który może być współużytkowany

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Język PL/SQL Wprowadzenie

Język PL/SQL Wprowadzenie Język PL/SQL Wprowadzenie Koncepcja języka, zmienne i stałe, typy zmiennych, nadawanie wartości zmiennym, instrukcje warunkowe, pętle, sterowanie przebiegiem programu 1 Wprowadzenie do języka PL/SQL Język

Bardziej szczegółowo

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

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

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

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image) Elementy języka T-SQL 40. Polecenie PRINT jest wykorzystywane do przekazania wiadomości tekstowej (maksymalna długość 8000 znaków) Przykład PRINT 'Aktualna data: '+convert(char(8),getdate()) PRINT 'Aktualny

Bardziej szczegółowo

LibreOffice Calc VBA

LibreOffice Calc VBA LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć

Bardziej szczegółowo

Tabele wykorzystywane w przykładach

Tabele wykorzystywane w przykładach Tabele wykorzystywane w przykładach create table departamenty( dep_id serial primary key, nazwa_departamentu text ); Tabele używane w wybranych przkładach create table pracownicy ( emp_id serial primary

Bardziej szczegółowo

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

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok; Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Podprogramy. Rozdział 11 Procedury i funkcje składowane Podprogramy Rozdział 11 Procedury i funkcje składowane Podprogramy, procedury składowane, funkcje składowane, wywoływanie podprogramów Przez podprogramy rozumiemy głównie: procedury (wykonują określone

Bardziej szczegółowo

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

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane Język PL/SQL. Rozdział 4. Procedury i funkcje składowane Podprogramy, procedury składowane, funkcje składowane, wywoływanie podprogramów. (c) Instytut Informatyki Politechniki Poznańskiej 1 Podprogramy

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Wyzwalacze (triggery) Przykład

Wyzwalacze (triggery) Przykład Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany

Bardziej szczegółowo

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3 cur.executescript(""" DROP TABLE IF EXISTS uczen; CREATE TABLE IF NOT EXISTS uczen ( Uniwersytet Technologiczno-Przyrodniczy im. J.J. Śniadeckich w Bydgoszczy Instrukcja do ćwiczeń laboratoryjnych Przedmiot

Bardziej szczegółowo

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20 Plan wykładu BAZY DANYCH II WYKŁAD 9 Dynamiczny SQL, NDS, EXECUTE IMMEDIATE, Pakiet DBMS_SQL, Obiekty w PL/SQL, Tworzenie, wywoływanie, dziedziczenie, etc. dr inż. Agnieszka Bołtuć Dynamiczny SQL Pozwala

Bardziej szczegółowo

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

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

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

2 PL/SQL - podstawy Zmienne i stałe Operatory SQL w PL/SQL Instrukcje sterujące... 8 Plan wykładu Spis treści 1 Wprowadzenie 1 2 PL/SQL - podstawy 1 2.1 Zmienne i stałe................................. 3 2.2 Operatory.................................... 6 2.3 SQL w PL/SQL.................................

Bardziej szczegółowo

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się

Bardziej szczegółowo

SQL :: Data Definition Language

SQL :: Data Definition Language SQL :: Data Definition Language 1. Zaproponuj wydajną strukturę danych tabela) do przechowywania macierzy o dowolnych wymiarach w bazie danych. Propozycja struktury powinna zostać zapisana z wykorzystaniem

Bardziej szczegółowo

Paweł Rajba

Paweł Rajba Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych 1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje

Bardziej szczegółowo

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

Wprowadzenie do języka PL/SQL. Rozdział 9 Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL Wprowadzenie do języka PL/SQL Rozdział 9 Język PL/SQL Wprowadzenie Język PL/SQL to rozszerzenie SQL o elementy programowania proceduralnego i obiektowego. PL/SQL umoŝliwia wykorzystanie: zmiennych i stałych

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger

Bardziej szczegółowo

Oracle10g: Programowanie w PL/SQL

Oracle10g: Programowanie w PL/SQL Oracle10g: Programowanie w PL/SQL OPIS: Szkolenie dotyczy użytkowników Oracle8i, Oracle9i i Oracle10g. Ten kurs pozwala zrozumieć zalety tego potężnego narzędzia programowania do PL/SQL. Studenci uczą

Bardziej szczegółowo