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

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

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

Transkrypt

1 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 zapytania oraz do przechowywania dodatkowych informacji dotyczących stanu wykonywanego zapytania, tzw. atrybutów. Kursor (ang. cursor) jest konstruktorem PLSQL umożliwiającym: nadanie nazwy temu obszarowi, dostęp do niego, pobranie z niego danych, kontrolę procesu przetwarzania danych. Wyróżniamy dwa rodzaje kursorów: jawne (ang. explicit) - stosowane w zapytaniach wyznaczających wiele krotek i w tzw. pętlach z kursorem (ang. Cursor For Loop), niejawne (ang. implicit) - stosowane w pozostałych poleceniach SQL (tj., insert, update, delete) i poleceniu select wyznaczającym jedną krotkę. Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL; Jeśli w klauzuli WHERE w deklaracji kursora występują odwołania do zmiennych PLSQL (o takich zmiennych mówimy, że są zmiennymi dowiązanymi), to zmienne te muszą być widoczne w miejscu deklaracji kursora, czyli muszą być zadeklarowane przed deklaracją kursora.

2 Kursory jawne Przed użyciem kursora jawnego należy go najpierw zadeklarować poleceniem declare: Przykład 1 declare * deklaracja kursora * cursor osoba_kursor is select nazwisko, nazwa from pracownik, zespol where pracownik.id_zesp = zespol.id_zesp and zespol.nazwa = 'BAZY DANYCH'; Otwarcie kursora open nazwa_kursora; Po otwarciu kursora następuje: Sprawdzenie wartości zmiennych dowiązanych, Określenie zbioru wyników na podstawie wartości zmiennych dowiązanych, Ustawienie wskaźnika zbioru wynikowego na pierwszym wierszu. Przykład 2 declare n zespol.nazwa%type; cursor osoba_kursor is select nazwisko, nazwa from pracownik, zespol where pracownik.id_zesp = zespol.id_zesp and zespol.nazwa = n; begin n = 'BAZY DANYCH'; open osoba_kursor;......

3 W momencie otwarcia kursora zmienna n ma wartość 'BAZY DANYCH' i ta wartość zostaje użyta w zapytaniu. Zmiana wartości zmiennej po wykonaniu instrukcji OPEN nie zmieni zbioru wynikowego zapytania. To zjawisko nazywamy spójnością odczytu. Aby w zapytaniu uwzględniona została nowa wartość zmiennej należy kursor zamknąć i ponownie go otworzyć. Zbiór wynikowy lub zbiór wierszy jest określany w momencie otwierania kursora. Wówczas ustalany jest również wskaźnik pokazujący wiersz, który ma być pobrany przez kursor jako następny. UWAGA: Nie można otworzyć wcześniej otwartego kursora. Pobranie danych z kursora lub fetch nazwa_kursora into lista_zmiennych; fetch nazwa_kursora into rekord_plsql; UWAGA: lista_zmiennych oraz pola rekordu muszą być zgodne pod względem typu z listą wyboru zapytania. Przykład 3 declare cursor pracownik_kursor is select nazwisko, placa_pod, id_zesp from pracownik; osoba_nazwisko pracownik.nazwisko%type; osoba_płaca pracownik.placa_pod%type; osoba_id_zesp pracownik.id_zesp%type; pracownik_dane pracownik_kursor%rowtype; begin open pracownik_kursor; fetch pracownik_kursor into osoba_nazwisko, osoba_płaca, osoba_id_zesp; fetch pracownik_kursor into pracownik_dane;

4 Polecenie fetch pobiera pojedynczy wiersz, a wskaźnik zbioru wynikowego zwiększa wartość odpowiednio dla następnego wiersza. W celu pobrania większej liczby wierszy jest konieczne wielokrotne użycie polecenia fetch (np. w pętli). Zamknięcie kursora close nazwa_kursora; Po pobraniu wszystkich wierszy ze zbioru wynikowego należy zamknąć kursor. Do mechanizmu PLSQL wysyłane są informacje, że przetwarzanie kursora zakończyło się i zasoby z tym związane (pamięć przydzielona dla zbioru wynikowego oraz tymczasowa przestrzeń wykorzystywana do wyznaczania tego zbioru) mogą być zwolnione. UWAGA: Nieprawidłowe jest zamykanie zamkniętego już kursora. Przykład 4 declare cursor pracownik_kursor is select nazwisko, placa_pod, id_zesp from pracownik; osoba_nazwisko pracownik.nazwisko%type; osoba_płaca pracownik.placa_pod%type; osoba_id_zesp pracownik.id_zesp%type; pracownik_dane pracownik_kursor%rowtype; begin open pracownik_kursor; fetch pracownik_kursor into osoba_nazwisko, osoba_płaca, osoba_id_zesp; fetch pracownik_kursor into pracownik_dane; close pracownik_kursor; end;

5 Do kursora można przekazać parametry, jego deklaracja jest wtedy następująca: declare cursor nazwa_kursora (param_1 typ_1,..., param_n typ_n) is param_1 typ_1,..., param_n typ_n oznaczają parametry kursora oraz ich typy. Typy parametrów są takie same jak typy zmiennych. Przykład 5 -- Deklarujemy kursor z dwoma parametrami CURSOR osoba (n pracownik.nazwisko%type, e pracownik.etat%type) IS SELECT nazwisko, etat FROM pracownik p WHERE UPPER(p.nazwisko)= UPPER(n) AND UPPER(p.etat) = UPPER(e) ORDER BY 1 DESC; zm_osoba osoba%rowtype; BEGIN -- Otwarcie kursora. Wielkość liter w łańcuchu bez znaczenia. OPEN osoba('maleja','adiunkt'); LOOP FETCH osoba INTO zm_osoba; EXIT WHEN osoba%notfound; DBMS_OUTPUT.PUT_LINE (osoba%rowcount '. ' zm_osoba.nazwisko ' ' zm_osoba.etat); END LOOP; CLOSE osoba; END;

6 Z każdym kursorem są związane cztery atrybuty, w których jest przechowywana informacja o przebiegu operacji wykonywanych przez kursor. %NOTFOUND: przyjmuje wartość true jeśli ostatnie polecenie fetch nie wyznaczyło krotki spełniającej warunek selekcji; w przeciwnym przypadku przyjmuje wartość false. W poniższym przykładzie, jeśli kursor nie wyznaczy krotki, atrybut osoba_kursor%notfound przyjmie wartość true i nastąpi wyjście z pętli. loop fetch osoba_kursor into osoba_nazwisko, osoba_nazwa; exit when osoba_kursor%notfound; end loop; %FOUND: przyjmuje wartość true jeśli ostatnie polecenie fetch wyznaczyło krotkę spełniającą warunek selekcji; w przeciwnym przypadku przyjmuje wartość false; %ROWCOUNT: wyznacza liczbę krotek pobranych poleceniem fetch; loop fetch osoba_kursor into osoba_nazwisko, osoba_nazwa; if osoba_kursor%rowcount > 10 then * odczytano ponad 10 krotek * end loop; %ISOPEN: przyjmuje wartość true jeśli kursor jest otwarty, w przeciwnym przypadku przyjmuje wartość false: if osoba_kursor%isopen then * pobierz krotkę * fetch osoba_kursor into osoba_nazwisko, osoba_nazwa; else *otwórz kursor * open osoba_kursor; end if;

7 Przykład 6 Kursor jawny pobieranie danych z więcej niż jednego wiersza w pętli FOR. CURSOR c_emp IS SELECT * FROM zespol ORDER BY nazwa; BEGIN FOR uv_emp IN c_emp LOOP DBMS_OUTPUT.PUT_LINE(uv_emp.id_zesp ' ' uv_emp.nazwa ' ' uv_emp.adres); END LOOP; END; Komentarz: Zmienna użyta w pętli FOR nie musi być zadeklarowana. PLSQL niejawnie deklaruje zmienną, której zasięg jest ograniczony do instrukcji pętli. Można więc pominąć jawne deklarowanie zmiennej rekordowej. Można też POMINĄĆ instrukcje OPEN, CLOSE i FETCH. Przykład 7 Kursor jawny pomijanie deklaracji kursora. BEGIN FOR uv_emp IN ( SELECT * FROM zespol ORDER BY nazwa) LOOP DBMS_OUTPUT.PUT_LINE(uv_emp.id_zesp ' ' uv_emp.nazwa ' ' uv_emp.adres); END LOOP; END;

8 Komentarz: W tej konstrukcji można pominąć deklarację kursora oraz instrukcje OPEN, FETCH i CLOSE. UWAGA: Zwięzłość kodu nie zawsze jest pożądana. Przykładowo nie można ponownie wykorzystywać kursora. Czasami lepiej mieć wszystkie instrukcje SELECT w sekcji przy dłuższych programach ułatwia to jego analizowanie. Zad.1 Zdefiniować kursor, który zawierać będzie nazwę etatu, nazwę zespołu oraz nazwisko pracowników zatrudnionych po dacie zatrudnienia pracownika o nazwisku LECH. Do wypisania zawartości kursora użyć instrukcji OPEN, FETCH i CLOSE. Zad.2 Zdefiniować kursor, który zawierać będzie roczną średnią płacę pracowników w poszczególnych grupach etatowych. Wypisać komunikaty DUZO jeśli kwota odczytana z kursora jest większa od lub MALO w przeciwnym przypadku. (Użyj pętli FOR.) Zad.3 Zdefiniuj kursor zawierający numery tych pracowników, których nazwiska zawierają na dowolnym miejscu literę podaną jako parametr kursora, wyniki uporządkuj rosnąco. Zastosuj pętlę FOR do wypisania informacji na ekranie. Parametrem kursora ma być litera podana przez użytkownika. Zad.4 Napisz blok, w którym: zdefiniuj kursor zawierający niepowtarzające się etaty, na których zatrudnieni są pracownicy pracujący w zespole o nazwie podanej przez użytkownika; wypisz na ekranie sumę płac podstawowych pracowników zatrudnionych na etatach występujących w kursorze; W przypadku gdy kursor jest pusty, wypisz komunikat ZESPOL NIE ZATRUDNIA PRACOWNIKOW. Zastosuj pętlę FOR.

9 Zad.5 Zdefiniuj blok, w którym: zdefiniuj kursor k1 zawierający nie powtarzającą się datę zatrudnienia najmłodszego pracownika na etacie podanym jako parametr przez użytkownika; zdefiniuj kursor k2 zawierający numery pracowników mających datę zatrudnienia późniejszą od daty podanej jako parametr. wypisz na ekranie zawartość kursora k2 dla daty znajdującej się w kursorze k1. (Wykorzystaj polecenia OPEN-FETCH-CLOSE.) Kursory niejawne nie są deklarowane przez programistę, polecenia open, fetch, close są wykonywane niejawnie przez system, atrybuty przechowujące informacje o przebiegu wykonywanych operacji: SQL%NOTFOUND, SQL%FOUND, SQL%ROWCOUNT, SQL%ISOPEN. Ich znaczenie jest takie samo, jak odpowiednich atrybutów kursora jawnego. Na przykład, wynik usunięcia pracownika o nazwisku Mały może być sprawdzony przez atrybut kursora niejawnego SQL%NOTFOUND w następujący sposób: delete from pracownik where nazwisko like 'Maleja'; if SQL%NOTFOUND then... * nie ma osoby o takim nazwisku * SQL%ROWCOUNT - wyznacza liczbę krotek, na których wykonano ostatnie polecenie insert, update, delete, np. update pracownicy set placa_pod = placa_pod * 1.2 where id_zesp = 10; if SQL%ROWCOUNT > 10 then... * uaktualniono więcej niż 10 wierszy * elsif SQL%ROWCOUNT = 0 then... * żaden wiersz nie spełnia warunku instrukcji update można np. wstawić nowy wiersz* end if;

10 SZBD automatycznie zamyka niejawny kursor po wykonaniu polecenia, co oznacza, że wartością atrybutu SQL%ISOPEN jest zawsze false. Przykład 8 Kursor niejawny pobieranie danych z jednego wiersza. uv_nazwisko VARCHAR2(25); uv_etat VARCHAR2(25); BEGIN SELECT nazwisko, etat INTO uv_nazwisko, uv_etat FROM pracownik WHERE numer = 1100; DBMS_OUTPUT.PUT_LINE('nazwisko: ' uv_nazwisko ', etat: ' uv_etat); END; Przykład 9 uv_nazwisko pracownik.nazwisko%type; BEGIN END; uv_etat pracownik.etat%type; SELECT nazwisko, etat INTO uv_nazwisko, uv_etat FROM pracownik WHERE numer = 1100; DBMS_OUTPUT.PUT_LINE('nazwisko: ' uv_nazwisko ', etat: ' uv_etat);

11 Przykład 10 uv_nazwisko pracownik.nazwisko%type; BEGIN uv_etat pracownik.etat%type; ile PLS_INTEGER; SELECT nazwisko, etat INTO uv_nazwisko, uv_etat FROM pracownik WHERE numer = 1100; DBMS_OUTPUT.PUT_LINE('nazwisko: ' uv_nazwisko ', etat: ' uv_etat); EXCEPTION * występuje tylko dla instrukcji SELECT * WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Zapytanie nie zwrocilo danych.'); WHEN TOO_MANY_ROWS THEN SELECT COUNT(*) INTO ile FROM pracownik WHERE numer = 1100; DBMS_OUTPUT.PUT_LINE('Zapytanie zwrocilo ' ile ' rekordow.'); END; Kursory z klauzulą FOR UPDATE instrukcji SELECT W celu modyfikowania wierszy pobieranych przez kursor język PLSQL dostarcza klauzuli FOR UPDATE w deklaracji kursora oraz klauzuli WHERE CURRENT OF w instrukcji UPDATE lub DELETE. Klauzula FOR UPDATE występuje jako ostatnia (za ORDER BY) klauzula w poleceniu SELECT.

12 SELECT FROM FOR UPDATE [OF odnosnik_do_kolumny] [NOWAIT], gdzie odnosnik_do_kolumny jest kolumną tabeli, na której jest wykonywane zapytanie. Może to być również lista kolumn. Przykład Ten kursor wylistuje dwie kolumny dla klauzuli UPDATE CURSOR wszyscy_pracownicy IS SELECT * FROM pracownik FOR UPDATE OF nazwisko, placa_podst; - - Ten kursor nie wylistuje żadnej kolumny CURSOR duza_placa IS SELECT numer, placa_podst FROM pracownik WHERE placa_podst > 2500 FOR UPDATE; Zmienne kursora Przestawione powyżej przykłady kursorów jawnych są przykładami kursorów statycznych - kursor jest związany z jedną instrukcją SQL i ta instrukcja jest znana w momencie kompilacji bloku. Zmienna kursora może być skojarzona z różnymi instrukcjami w czasie wykonywania kodu. Przed użyciem zmienna kursora musi być zadeklarowana. W czasie wykonania dla zmiennej kursora musi być przydzielona pamięć (typ FER). Następnie kursor jest otwierany, są z niego pobierane dane i jest zamykany (podobnie jak miało to miejsce z kursorem statycznym). Zmienne kursora są najczęściej wykorzystywane wewnątrz procedur składowanych, które zwracają zmienne do programu działającego po stronie klienta.

13 Zmienna kursora jest typem odwołania (jak wskaźniki w C). Może określać różne miejsca pamięci w czasie wykonywania programu. Deklaracja typu odwołania: REF typ, gdzie typ jest uprzednio zdefiniowanym typem. Słowo kluczowe REF wskazuje, że nowy typ będzie wskaźnikiem do zdefiniowanego typu. TYPE nazwa_typu IS REF CURSOR RETURN typ_rekordu; gdzie nazwa_typu jest nazwą nowego typu odwołania, a typ_rekordu jest typem rekordu wskazującego typy z listy wyboru, które będą ewentualnie zwrócone przez zmienną kursora. Zwracany typ zmiennej kursora musi być typem rekordu zadeklarowanym jawnie jako rekord zdefiniowany przez użytkownika lub niejawnie %ROWTYPE. Przykład 12 TYPE t_pracownik IS REF CURSOR RETURN pracownik%rowtype; TYPE t_rekord IS RECORD ( numer pracownik.numer%type, nazwisko pracownik.nazwisko%type ); zm_t_rekord t_rekord; TYPE t_numer_nazwisko IS REF CURSOR RETURN t_rekord; TYPE t_numer_nazwisko_2 IS REF CURSOR RETURN zm_t_rekord%type; zm_t_pracownik t_pracownik; zm_t_numer_nazwisko t_numer_nazwisko; Przykład 12 zawiera ograniczone zmienne kursora deklarowane tylko dla określonego typu zwracanych informacji. W deklaracji nieograniczonych zmiennych kursora nie ma klauzuli RETURN. Stąd mogą być otwarte dla dowolnego zapytania.

14 Przykład 13 TYPE t_pracownik IS REF CURSOR; zm_t_pracownik t_pracownik; Otwieranie zmiennej kursora dla zapytania OPEN zmienna_kursora FOR instrukcja_wyboru; UWAGA: Jeżeli zmienna kursora jest ograniczona, to lista wyboru musi odpowiadać typowi wyniku kursora. W zapytaniu sprawdzane są zmienne dowiązane i określany jest zbiór wynikowy. Z otwartej zmiennej kursora można pobierać dane instrukcją FETCH, a następnie zmienną kursową można zamknąć. Zamykanie zmiennej kursora CLOSE zmienna_kursora; Instrukcja CLOSE zwalnia zasoby użyte dla zapytania, ale niekoniecznie zwalnia obszar pamięci dla samej zmiennej kursora. Obszar pamięci zmiennej zwalniany jest wtedy, kiedy zmienna wychodzi poza zakres. Zamykanie kursora lub zmiennej kursora, które są już zamknięte, jest nieprawidłowe.

15 Przykład 14 TYPE t_pracownik IS REF CURSOR; zm_t_pracownik t_pracownik; zm_numer pracownik.numer%type; zm_nazwisko pracownik.nazwisko%type; BEGIN OPEN zm_t_pracownik FOR SELECT numer, nazwisko FROM pracownik; LOOP FETCH zm_t_pracownik INTO zm_numer, zm_nazwisko; EXIT WHEN zm_t_pracownik%notfound; DBMS_OUTPUT.PUT_LINE(zm_t_pracownik%ROWCOUNT ' ' zm_numer ' ' zm_nazwisko); END LOOP; CLOSE zm_t_pracownik; END; UWAGI: Zmienne kursora nie mogą być deklarowane w pakiecie; można w nim deklarować tylko typy. Zdalne procedury nie mogą zwracać wartości zmiennej kursora. Zmienne kursora mogą być przekazywane pomiędzy mechanizmem PLSQL po stronie klienta oraz po stronie serwera, ale nie pomiędzy dwoma serwerami. Kolekcje języka PLSQL (tabele indeksowe, tabele zagnieżdżone oraz tablice VARRAY) nie mogą zawierać zmiennej kursora. Podobnie tabele bazy danych i perspektywy nie mogą zawierać kolumn typu REF CURSOR. Można natomiast zdefiniować tablicę zmiennych kursora po stronie klienta.

16 Nie można używać zmiennych kursora z dynamicznym SQL w programie Pro*C. Zapytanie skojarzone ze zmienną kursora w instrukcji OPEN FOR nie może wykorzystywać klauzuli FOR UPDATE. Ograniczenie zniesione od wersji Oracle8i. Wyjątek (ang. exception) jest szczególnym zdarzeniem, które może zajść w trakcie wykonywania programu, np. dzielenie przez zero; może być obsłużony przez związaną z nim procedurę nazywaną procedurą obsługi wyjątku (ang. exception handling); w każdym programie mogą zostać wywołane dwa rodzaje wyjątków: predefiniowane, wywoływane niejawnie przez system w trakcie działania programu lub wywoływane jawnie przez programistę; definiowane przez użytkownika, wywoływane jawnie w ciele programu odpowiednim poleceniem. Aby wywołać wyjątek definiowany należy go najpierw zadeklarować w sekcji deklaracji bloku: brak_danych EXCEPTION; Z każdym wyjątkiem (predefiniowanym i definiowanym) musi być związana procedura obsługi wyjątku, którą definiujemy w ostatnim bloku lub podbloku programu, oddzielonym od pozostałych bloków słowem kluczowym EXCEPTION: EXCEPTION * początek bloku definiowania wyjątków * WHEN brak_danych THEN *jeśli wywołany wyjątek brak_danych * INSERT INTO pracownicy VALUES (...);

17 UWAGA: Jeśli chcemy aby ta sama procedura obsługi wyjątku ma być wykonywana dla różnych wyjątków, w klauzuli WHEN należy nazwy wyjątków oddzielić od siebie słowem kluczowym OR. Procedura obsługi wyjątków predefiniowanych jest wywoływana niejawnie w trakcie działania programu, może być również wywołana jawnie w ciele programu. Przykładowo, próba zamknięcia kursora, który nie został wcześniej otwarty spowoduje wywołanie wyjątku niejawnego, którego procedurę obsługi umieszczono po słowie kluczowym exception. Przykład 15 declare cursor pracownik_kursor is select numer, nazwisko, placa_pod from pracownik; pracownik_rekord pracownik_kursor%rowtype; begin close pracownik_kursor; * zamknięcie kursora, który nie został wcześniej otwarty * exception when INVALID_CURSOR then null; end; Wyjątek i związaną z nim procedurę obsługi wywołujemy jawnie poleceniem raise. select count(*) into liczba_prac from pracownicy; if liczba_prac = 0 then raise brak_danych;

18 Wybrane predefiniowane wyjątki: DUP_VAL_ON_INDEX - wywoływany, gdy na skutek wykonania polecenia insert lub update różne rekordy relacji posiadają tę samą wartość atrybutu zadeklarowanego jako unikalny; INVALID_CURSOR - wywoływany w wyniku wykonania operacji na kursorze, która jest niepoprawna w pewnym kontekście, np. Zamknięcie nieotwartego kursora; INVALID_NUMBER - wywoływany, gdy nie jest możliwa konwersja łańcucha znaków do postaci liczby, ponieważ łańcuch zawiera niedopuszczalne wartości; LOGIN_DENIED - wywoływany w przypadku podania niepoprawnych parametrów w poleceniu rozpoczęcia sesji - login, np. nazwy użytkownika lub hasła; NO_DATA_FOUND - wywoływany, gdy polecenie select nie wyznacza żadnej krotki; NOT_LOGGED_ON - wywoływany w wyniku próby wykonania funkcji Oracle przez użytkownika nie dołączonego do systemu; PROGRAM_ERROR - wywoływany w wyniku błędnego działania programu PLSQL; STORAGE_ERROR - wywoływany w wyniku błędu pamięci lub braku miejsca w pamięci; TIMEOUT_ON_RESOURCE - wywoływany po upłynięciu czasu oczekiwania na przydzielenie zasobu;

19 TOO_MANY_ROWS - wywoływany, gdy jest wymagana dokładnie jedna krotka, a polecenie select wyznacza większą liczbę krotek; VALUE_ERROR - wywoływany w przypadku błędu konwersji typów danych (np. próby wpisania daty do numerycznego pola krotki) lub, gdy aktualna długość danej przekracza wcześniej zadeklarowaną długość (np. próba wpisania do pola krotki o długości 3 znaków danej o długości 5 znaków); ZERO_DIVIDE - wywoływany w wyniku próby dzielenia przez 0; OTHERS - wywoływany w dla wszystkich wyjątków, które nie zostały wyspecyfikowane w bloku exception; definiowany jako ostatni w bloku exception. Do uzyskania informacji o błędzie można uzyskać dzięki funkcjom: SQLCODE zwraca bieżący kod błędu, dla wyjątków zdefiniowanych przez użytkownika zwraca 1; SQLERRM zwraca tekst komunikatu o bieżącym błędzie, dla wyjątków zdefiniowanych przez użytkownika zwraca komunikat Userdefined Exception. Może być wywoływana z pojedynczym argumentem liczbowym: 0 normalne, udane zakończenie; > 0 i <> +100 wyjątek nie jest wyjątkiem systemowym Oracle; < 0 zwraca komunikat skojarzony z błędem; bez argumentu zwraca zawsze normalne, udane zakończenie. Wyżej wymienione funkcje przypisywane są zmiennym lokalnym, które następnie stosowane są w instrukcjach SQL. Zad.6 Zdefiniuj kursor zawierający nazwiska i daty zatrudnienia wszystkich asystentów. Posłuż się tym kursorem do wyświetlenia rekordów w formie zdań Asystent <nazwisko> pracuje od <data_zatrudnienia>. Posłuż się poleceniem FETCH.

20 Kolekcje Tablice indeksowane: TYPE nazwa_typu IS TABLE OF typ INDEX BY BINARY_INTEGER; Tablice indeksowane dla typów nieskalarnych: rekordy TYPE nazwa_typu IS TABLE OF typ_rekord INDEX BY BINARY_INTEGER; Przykład 16 TYPE t_etat IS TABLE OF etat%rowtype INDEX BY BINARY_INTEGER; zm_t_etat t_etat; BEGIN SELECT * INTO zm_t_etat(1000) FROM etat WHERE nazwa = 'profesor'; DBMS_OUTPUT.PUT_LINE(zm_t_etat(1000).nazwa); zm_t_etat(1001) := 'audytor'; DBMS_OUTPUT.PUT_LINE(zm_t_etat(1001).nazwa); END; obiekty Zaczynamy od utworzenia typu obiektowego, a następnie można tworzyć egzemplarze gotowego typu obiektowego. Przykład 17 CREATE OR REPLACE TYPE Moj_obiekt AS OBJECT( pole_1 number, pole_2 varchar2(20), pole_3 date);

21 TYPE t_obiektow IS TABLE OF Moj_obiekt INDEX BY BINARY_INTEGER; zm_obiektow t_obiektow; BEGIN zm_obiektow(1) := Moj_obiekt(1, NULL, NULL); zm_obiektow(1).pole_1 := 'Norbert'; zm_obiektow(1).pole_2 := sysdate; DBMS_OUTPUT.PUT_LINE(zm_obiektow(1).pole_1 ' ' zm_obiektow(1).pole_2 ' ' zm_obiektow(1).pole_3); END; tabele zagnieżdżone Tabele zagnieżdżone można tworzyć używając kluczy sekwencyjnych, a te nie mogą być liczbami ujemnymi. Tabele zagnieżdżone można zapisywać w bazie danych. Maksymalna liczba wierszy w tabeli zagnieżdżonej wynosi 2 GB (to maksymalna wartość klucza). Składnia: TYPE nazwa IS TABLE OF typ_tablicowy [NOT NULL]; gdzie typ_tablicowy może być typem wbudowanym, typem zdefiniowanym przez użytkownika lub wyrażeniem zawierającym %TYPE, ale nie może być to jeden z typów: BOOLEAN, NCHAR, NVARCHAR2 lub REF CURSOR. Gdy występuje fraza NOT NULL, elementy tabeli zagnieżdżonej nie mogą przyjmować wartości NULL.

22 Przykład 18 TYPE tabobiektow IS TABLE OF Moj_obiekt; zm_obiektow tabobiektow := tabobiektow(moj_obiekt(1,'ala',sysdate)); BEGIN DBMS_OUTPUT.PUT_LINE(zm_obiektow(1).pole_1); END; Metody kolekcji (tabele zagnieżdżone) Metoda Typ zwracanej wartości Opis EXISTS BOOLEAN Sprawdza istnienie danego elementu kolekcji. COUNT NUMBER Zwraca liczbę elementów w kolekcji. LIMIT NUMBER Zwraca maksymalną liczbę elementów w kolekcji. FIRST (LAST) NEXT (PRIOR) EXTEND NA BINARY_INTEGER Zwraca pierwszy (ostatni) element kolekcji. BINARY_INTEGER Zwraca następny (poprzedni) element kolekcji względem danego. Dodaje element do kolekcji. TRIM NA Usuwa element z końca kolekcji. DELETE NA Usuwa wybrane elementy kolekcji. Poprawne dla Tabele indeksowane, tabele zagnieżdżone. Tabele indeksowane, tabele zagnieżdżone. Tabele zagnieżdżone (zawsze zwraca NULL). Tabele indeksowane, tabele zagnieżdżone. Tabele indeksowane, tabele zagnieżdżone. Tabele zagnieżdżone. Tabele zagnieżdżone Tabele indeksowane, tabele zagnieżdżone.

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

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

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

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

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

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

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

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

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

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

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

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

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

OBSŁUGA WYJĄTKÓW. Mechanizm języka PL/SQL. Wyjątki:

OBSŁUGA WYJĄTKÓW. Mechanizm języka PL/SQL. Wyjątki: OBSŁUGA WYJĄTKÓW W języku PL/SQL zaimplementowano obsługę błędów za pomocą: mechanizmu wyjątków programów obsługi wyjątków w tzw. sekcji obsługi wyjątków. Wyjątki mogą być związane z: błędami systemu Oracle

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ć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

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

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

Wyzwalacze TWORZENIE WYZWALACZY

Wyzwalacze TWORZENIE WYZWALACZY Wyzwalacze: podobnie jak procedury i funkcje, są nazwanymi blokami PL/SQL zawierającymi sekcje deklaracji, wykonania i obsługi wyjątków; nie akceptują argumentów; muszą być składowane jako samodzielne

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: 2: 3: 4: 5: 6: 7: 8: 9: 10:

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Grupa A (LATARNIE) Imię i nazwisko: Numer albumu: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Nazwisko prowadzącego: 11: 12: Suma: Ocena: Zad. 1 (10 pkt) Dana jest relacja T. Podaj wynik poniższego zapytania (podaj

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

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

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

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

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

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

Podstawowe zapytania SELECT (na jednej tabeli)

Podstawowe zapytania SELECT (na jednej tabeli) Podstawowe zapytania SELECT (na jednej tabeli) Struktura polecenia SELECT SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje FROM nazwy tabel lub widoków WHERE warunek (wybieranie wierszy) GROUP

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 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

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

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

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

Ć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

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

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 3 Podstawy programowania w T-SQL Zmienne i operatory Instrukcje sterujące Komunikaty Format daty

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

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

Wprowadzenie do języka SQL

Wprowadzenie do języka SQL Wprowadzenie do języka SQL język dostępu do bazy danych grupy poleceń języka: DQL (ang( ang.. Data Query Language) DML (ang( ang.. Data Manipulation Language) DDL (ang( ang.. Data Definition Language)

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,

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

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

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

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

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

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

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

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia). POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane

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

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

Ć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

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE Instrukcje SQL dzielimy na następujące kategorie: 1) Instrukcje języka manipulowania danymi (DML) SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN 2) Instrukcje języka definicji danych DDL

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

Bardziej szczegółowo

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

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

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

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

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

Bardziej szczegółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. SQL Structured Query Languagestrukturalny Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych

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

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

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

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX Aktualizowanie dokumentów XML ( Oracle ) do aktualizowania zawartości dokumentów XML służy między innymi funkcja updatexml. wynikiem jej działania jest oryginalny dokument ze zmodyfikowanym fragmentem,

Bardziej szczegółowo

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

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

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

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW Położenie podprogramów Jak wiemy, podprogramy i pakiety jako bloki nazwane, mogą być składowane w słowniku danych. Podprogram najpierw tworzy się za pomocą polecenia

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

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

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

Ćwiczenie 3 funkcje agregujące

Ćwiczenie 3 funkcje agregujące Ćwiczenie 3 funkcje agregujące Funkcje agregujące, klauzule GROUP BY, HAVING Ćwiczenie 3 funkcje agregujące Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL

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

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji 6. Język SQL Język SQL (Structured Query Language): - język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji - stworzony w IBM w latach 70-tych DML (Data Manipulation

Bardziej szczegółowo

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

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

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

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

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2) Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5.

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

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

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy) Zapytania SQL. Polecenie SELECT jest używane do pobierania danych z bazy danych (z tabel lub widoków). Struktura polecenia SELECT SELECT FROM WHERE opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje

Bardziej szczegółowo

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

ĆWICZENIE 4. 1. Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect). ĆWICZENIE 4 1. Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect). 4. Utworzyć blok danych (Data Block) oparty na tabeli SAMOCHODY:

Bardziej szczegółowo