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;

DECLARE typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ć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

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

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

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

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

Ć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

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

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

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

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

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

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

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

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Przypomnienie kursorów Przypomnienie procedur i funkcji składowanych Poznanie pakietów składowanych 2 Bazę danych Oracle możemy traktować jakby była złożona z dwóch

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

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

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

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

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

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

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

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

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Tworzenie typów obiektowych 1. Zdefiniuj typ obiektowy reprezentujący SAMOCHODY. Każdy samochód powinien mieć markę, model, liczbę kilometrów oraz datę

Bardziej szczegółowo

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

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 1 rekordy z wyróżnikami Agata Półrola Wydział Matematyki UŁ 2005/2006 Egzamin z I roku - problemy Problemy z wczytywaniem danych: skip_line Problemy z obliczeniami: zerowanie

Bardziej szczegółowo

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

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli. SQL W JĘZYKU PL/SQL Strukturalny język zapytań SQL określa sposób manipulowania danymi w bazie danych. Konstrukcje proceduralne języka PL/SQL stają się bardziej użyteczne w połączeniu z mocą przetwarzania

Bardziej szczegółowo

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)

Bardziej szczegółowo

Imię i Nazwisko Data Ocena. Laboratorium 7

Imię i Nazwisko Data Ocena. Laboratorium 7 Imię i Nazwisko Data Ocena Laboratorium 7 Celem tego ćwiczenia jest pokazanie, że w MoscowML można pisać aplikacje użytkowe, np. prosty interpreter języka SQL (MLSQL) Listy i krotki Różnica pomiędzy krotkami

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

Bardziej szczegółowo

Procedury Funkcje Pakiety. Tworzenie procedury

Procedury Funkcje Pakiety. Tworzenie procedury Podprogramy tworzy się za pomocą instrukcji CREATE. Tworzenie procedury Składnia CREATE [OR REPLACE] PROCEDURE nazwa_procedury [(param1 [IN OUT IN OUT] typ_danych [:= DEFAULT wyrażenie], param2 [IN OUT

Bardziej szczegółowo

Microsoft SQL Server Podstawy T-SQL

Microsoft SQL Server Podstawy T-SQL Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

Systemowe aspekty baz

Systemowe aspekty baz Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy danych 1 Plan rozdziału 2 Wprowadzenie obiektowy model danych Obiekty w bazie danych definiowanie i przechowywanie składowe i metody konstruktory referencje dziedziczenie i polimorfizm Kolekcje

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel SQL, LIKE, IN, CASE, EXISTS Marcin Orchel Spis treści 1 LIKE 2 2 BETWEEN 4 3 IN 5 4 EXISTS 6 5 WYRAŻENIA CASE 7 6 Zadania 9 1 Rozdział 1 LIKE Predykat LIKE jest testem dopasowującym wzorzec łańcucha. Składnia

Bardziej szczegółowo

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

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

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 4 Wsady Procedury składowane Procedury składowane tymczasowe, startowe Zmienne tabelowe Funkcje

Bardziej szczegółowo

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

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 1 Wprowadzenie Dostęp do bazy danych Program SQL*Plus Podstawy PL/SQL - 2 - Wprowadzenie Dlaczego warto uczyć się o Oracle u? Oracle

Bardziej szczegółowo

Kiedy i czy konieczne?

Kiedy i czy konieczne? Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

Bardziej szczegółowo

Bazy danych 2 Laboratorium 2

Bazy danych 2 Laboratorium 2 Język PLSQL: złożony język programowania, dzięki któremu mamy możliwość uzyskać dostęp do bazy danych Oracle z różnych środowisk; jest to język zintegrowany z serwerem bazy danych, co ma wpływ na szybkość

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów 2011-01-13 Plan wykładu BAZY DANYCH II WYKŁAD 7 Pakiety: specyfikacja, ciało, Wywoływanie elementów pakietów, Przeciążanie podprogramów z pakietów, Inicjowanie pakietów, Deklaracje uprzedzające, Funkcje pakietowe

Bardziej szczegółowo

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

Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1

Bardziej szczegółowo

Bazy danych Język SQL część 2 Wykład dla studentów matem

Bazy danych Język SQL część 2 Wykład dla studentów matem Bazy danych Język SQL część 2 Wykład dla studentów matematyki 21 marca 2015 Zapytania na kilku tabelach Czasem poszukiwana informacja znajduje się w kilku tabelach. Aby zapytanie dotyczyło kilku tabel,

Bardziej szczegółowo

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

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): Utwórz bazę danych Cw: CREATE DATABASE Cw Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): DBCC USEROPTIONS Przykład z zapisem do tabeli tymczasowej: --Jeśli istnieje tabela tymczasowa

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy

Bardziej szczegółowo

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn

Bardziej szczegółowo

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

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze Ćwiczenie 13 PL/SQL Język PL/SQL procedury, funkcje, pakiety, wyzwalacze Ćwiczenie 13 PL/SQL Niniejsze ćwiczenie zaprezentuje składowane w bazie danych programy PL/SQL: procedury, funkcje, pakiety oraz

Bardziej szczegółowo

P o d s t a w y j ę z y k a S Q L

P o d s t a w y j ę z y k a S Q L P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p

Bardziej szczegółowo

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ Wykład 4 Katedra Inżynierii Komputerowej Jakub Romanowski jakub.romanowski@kik.pcz.pl Operacje na tabelach C/AL Poniższe funkcje odpowiadają za operacje modyfikacji

Bardziej szczegółowo

BAZY DANYCH Cz III. Transakcje, Triggery

BAZY DANYCH Cz III. Transakcje, Triggery BAZY DANYCH Cz III Transakcje, Triggery Transakcje Definicja: Zbiór operacji (modyfikacja danych, usuwanie, wstawianie, tworzenie obiektów bazodanowych), które albo wszystkie kończone są sukcesem, albo

Bardziej szczegółowo

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Procedury składowane c.d. Parametry tablicowe w Transact-SQL. W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Zadanie 1. Proszę napisad procedurę składowaną, która

Bardziej szczegółowo

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

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 4 Wyjątki PL/SQL Mechanizmy dotyczące błędów Typy wyjątków Obsługa wyjątków PL/SQL Obsługa błędów predefiniowanych, użytkownika

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP Zad. 1 Dla każdego zamówienia wyznaczyć jego wartość. Należy podać numer zamówienia oraz wartość. select z.id_zamowienia, sum(ilosc*cena) as wartosc

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

Bardziej szczegółowo

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania

Bardziej szczegółowo

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

Właściwości i metody obiektu Comment Właściwości

Właściwości i metody obiektu Comment Właściwości Właściwości i metody obiektu Comment Właściwości Właściwość Czy można zmieniać Opis Application nie Zwraca nazwę aplikacji, która utworzyła komentarz Author nie Zwraca nazwę osoby, która utworzyła komentarz

Bardziej szczegółowo

Systemowe aspekty baz danych

Systemowe aspekty baz danych Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo