Typy danych w języku PL/SQL

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

Download "Typy danych w języku PL/SQL"

Transkrypt

1 Typy danych w języku PL/SQL W systemie Oracle 7 język PL/QSL udostępniał trzy kategorie typów: skalarne, złożone, odwołania. W systemie Oracle 8 zdefiniowano dwie dodatkowe kategorie typów: typ LOB, typy obiektowe. Skalarne typy danych, w odróżnieniu od typów złożonych, nie posiadają składników wewnątrz typu. Typ odwołania jest wskaźnikiem do innego typu. PL/SQL oferuje różnorodne typy danych, które można podzielić na cztery obszerne klasy: skalarne typy danych, złożone typy danych, obiektowe typy danych i inne, charakterystyczne dla języka PL/SQL. Skalarne typy danych to: rodzina NUMBER i jej typy podrzędne; rodzina CHAR, w tym Natural Character i jego typy podrzędne; rodzina DATE i jej typy podrzędne; rodzina INTERVAL; rodzina danych logicznych, rodzina MSLABEL i rodzina RAW. Złożonymi typami danych są: typ rekordowy, tabela indeksowa oraz kolekcje tabele zagnieżdżone i tabele o zmiennym rozmiarze. Innym przedstawicielem typów danych języka PL/SQL jest rodzina typów LOB. Wśród rodziny typów odnośników wyróżniamy typ REF CURSOR, znany również jako zmienna kursora oraz typ obiektu REF. Do obiektowych typów danych możemy zaliczyć: typy obiektowe, odwołania do obiektów oraz charakterystyczne od Oracle9i obiektowe typy danych SYS.ANYTYPE, SYS.ANYDATA, SYS.ANYDATASET oraz ich rodzina. 1

2 Tabela 3.1. Typy danych w PL/SQL: TYPY SKALARNE Rodzina numeryczna: Rodzina znakowa: Rodzina daty (czasu): BINARY_INTEGER CHAR DATE DEC CHARACTER INTERVAL DAY TO SECOND DECIMAL LONG CLOB INTERVAL YEAR TO MONTH DOUBLE_PRECISION NCHAR TIMESTAMP FLOAT NVARCHAR2 TIMESTAMP WITH TIME ZONE INT STRING TIMESTAMP WITH LOCAL TIME ZONE INTEGER NATURAL NATURALN NUMBER VARCHAR VARCHAR2 Rodzina identyfikatora wiersza: Rodzina logiczna: NUMERIC ROWID BOOLEAN PLS_INTEGER POSITIVE UROWID POSITIVEN Rodzina ochrony: Rodzina RAW: SIMPLE_INTEGER MLSLABEL RAW SMALINT LONG RAW BLOB lub BFILE IEEE-754 BINARY_DOUBLE BINARY_FLOAT TYPY ZŁOŻONE RECORD TYP LOB BFILE TYPY ODWOŁANIA TYPY OBIEKTOWE typ_obiektowy INDEX BY TABLE NESTED TABLE VARRAY LOB CLOB NLOB REF CURSOR REF typ_obiektowy SYS.ANYTYPE SYS.ANYDATA SYS.ANYDATASET 2

3 Ponieważ wszystkie predefiniowane typy języka PL/SQL są zdefiniowane w pakiecie o nazwie STANDARD, to można je wykorzystać dla każdego bloku PL/SQL. Pakiet STANDARD definiuje również wbudowane funkcje SQL oraz funkcje konwersji dostępne w języku PL/SQL. Oprócz typów predefiniowanych, których klasyfikacja została przedstawiona w powyższej tabeli, wyróżniamy jeszcze w PL/SQL typy podrzędne zdefiniowane przez użytkownika. Dla każdego typu danych obowiązuje określony zestaw zasad dotyczący ich składni i stosowalności, a motor bazy danych Oracle zapewnia obsługę tych zasad. Typy skalarne Omówimy teraz każdą z rodzin typów skalarnych, które stosowanie jest dozwolone dla kolumn bazy Oracle. Jak przedstawia to Tabela 3.1, typy skalarne można podzielić na siedem rodzin: numeryczną, znakową, daty i czasu, logiczną, RAW, identyfikatora wiersza i ochrony. Rodzina numeryczna Wszystkie typy numeryczne są przeznaczone do przechowywania liczb rzeczywistych lub liczb całkowitych. Rodzina numeryczna składa się z czterech podstawowych typów: BINARY_INTEGER, typy zgodne z formatem IEEE 754, (BINARY_DOUBLE i BINARY FLOAT), NUMBER i PLS_INTEGER. Zmienne typu NUMBER mogą przechowywać zarówno liczby całkowite, jak i rzeczywiste, zaś typy numeryczne BINARY_INTEGER i PLS_INTEGER tylko liczby całkowite (w PL/SQL te dwa typy są identyczne w dokumentacji Oracle nawet typ PLS_INTEGER jest używany do opisu obu typów). Typ NUMBER Typ NUMBER służy do przechowywania wartości numeryczne (zarówno liczb całkowitych, jak i zmiennoprzecinkowych). Jest on odpowiednikiem typu danych NUMBER kolumny tabeli w bazie danych. Składnia tego typu danych jest następująca: NUMBER (P,S), gdzie P oznacza czynnik precyzji, tj. liczbę wszystkich występujących cyfr, a S czynnik skali, tj. liczbę cyfr występujących z prawej strony znaku kropki dziesiętnej. Czynnik skali może być ujemny, co oznacza, że wartość jest zaokrąglana do określonej liczby miejsc z lewej strony kropki 3

4 dziesiętnej. Zarówno czynnik precyzji, jak i skali są opcjonalne. Jeżeli jednak występuje czynnik skali, to również trzeba określić czynnik precyzji. Poniższe zasady mogą być pomocne w prawidłowym deklarowaniu zmiennych liczbowych: jeśli czynnik skali ma wartość większą od zera, to w ten sposób określa miejsce z prawej strony kropki dziesiętnej, w którym następuje zaokrąglenie wartości. Natomiast użycie wartości mniejszej od zera określa miejsce zaokrąglenia z lewej strony kropki dziesiętnej. jeśli czynnik skali ma wartość równa zero, to zaokrąglenie następuje do najbliższej wartości całkowitej, jeśli czynnik skali nie został określony, zaokrąglenie nie zachodzi, jeśli wartość przypisanej liczby przekracza wartość czynnika skali, wówczas wartość przechowywana jest zaokrąglana do liczby określonej przez skalę. Poniższa tabela przedstawia różne możliwości ustawień czynnika precyzji i skali: Tabela Różne kombinacje ustawień czynników precyzji i skali Deklaracja wartości numerycznej Przykładowa wartość przypisania Wartość przechowywana NUMBER NUMBER(3) NUMBER(3) 1234 Błąd przekroczony czynnik precyzji NUMBER(4,3) Błąd przekroczony czynnik precyzji NUMBER(6.1) NUMBER(3,-3) NUMBER(3,-1) W Oracle 11g zmienne tego typu mogą przechowywać liczby z przedziału od 1.0E-130 do 1.0E126. Twórcy Oracle zalecają stosowanie typu NUMBER tylko wtedy, gdy operandy lub wyniki obliczeń znajdują się w tym przedziale. Jeśli literał lub obliczona wartość wykraczają poza podany przedział, to: przypisanie literału o wartości mniejszej od minimalnej powoduje zapisanie w zmiennej typu NUMBER wartości NULL, 4

5 przypisanie literału o wartości większej od maksymalnej powoduje zapisanie zgłoszenie błędu kompilacji, wynik obliczeń przekraczający wartość maksymalną powoduje zgłoszenie błędu kompilacji. Możliwość zdefiniowania podtypu pozwala w ramach danej rodziny zdefiniować takie typy, dla których można ograniczać dozwolone wartości dla zmiennych podtypu. W języku PL/SQL istnieje pewna liczba podtypów równoważnych z typem NUMBER. Zmieniają one jedynie nazwę typu danych NUMBER, ponieważ żaden z nich nie nakłada dodatkowych ograniczeń. Fakt zdefiniowania tych podtypów pozwala na zachowanie zgodności z typami danych pochodzącymi z innych baz danych, a w niekiedy również wykorzystywanie alternatywnych nazw typów ma na celu zwiększenie czytelności podtypu lub programu. Przykładami równoważnych typów dla typu NUMBER są: DEC, DECIMAL, DOUBLE PRECISION, FLOAT, NUMERIC, REAL. Spośród typów wykorzystywanych do przechowywania liczb zmiennoprzecinkowych typy DEC, DECIMAL oraz NUMERIC posiadają maksymalną wartość czynnika precyzji 38 cyfr dziesiętnych. Typy DOUBLE, PRECISION oraz FLOAT mają czynnik precyzji o wartości 126 cyfr binarnych, co w przybliżeniu odpowiada 38 cyfrom dziesiętnym. Typ REAL ma czynnik precyzji o wartości 63 cyfr binarnych, co w przybliżeniu odpowiada 18 cyfrom dziesiętnym. Oprócz powyższych typów, które nie wprowadzają ograniczeń, istnieją podtypy INTEGER, INT oraz SMALLINT, które mogą służyć do przechowywania liczb całkowitych o maksymalnej wartości czynnika precyzji równej 38 cyfrom dziesiętnym. Typ BINARY_INTEGER Typ NUMBER jest przechowywany w formacie dziesiętnym, zoptymalizowanym pod względem dokładności i wydajności przechowywania. Z tego powodu operacje arytmetyczne nie mogą być wykonywane bezpośrednio na danych typu NUMBER. W celu przeprowadzenia obliczeń wykorzystujących wielkości numeryczne typy NUMBER muszą zostać zamienione na typy binarne. Jeżeli występuje wyrażenie arytmetyczne zawierające typ NUMBER, to typ NUMBER zostanie automatycznie zamieniony na typ binarny. W razie potrzeby wynik ponownie ulegnie przekonwertowaniu do typu NUMBER. 5

6 Gdy występuje wartość całkowita, która nie będzie przechowywana w bazie danych, ale będzie wykorzystywana do obliczeń, wówczas można zastosować typ danych BINARY_INTEGER. Ten typ jest wykorzystywany do przechowywania wartości liczb całkowitych ze znakiem + lub -, których wartość mieści się w zakresie od do Jest on przechowywany w formacie binarnym z uzupełnieniem do 2, który jest dostępny do obliczeń bez konwersji. Większość liczników pętli jest typu BINARY_INTEGER. Podobnie jak dla typu NUMBER, również dla typu BINARY_INTEGER występują różne podtypy danych. Podtypy BINARY_INTEGER są ograniczone, co oznacza, że mogą przechowywać wartości pochodzące z ograniczonego zakresu. Podtypami tymi są: Deklaracja Zakres NATURA NATURALN NOT NULL POSITIVE POSITIVEN NOT NULL SIGNTYPE -1, 0, 1 Typ PLS_INTEGER Typy PLS_INTEGER mają taki sam zakres jak typy BINARY_INTEGERS: od do Są one również przetwarzane z wykorzystaniem rdzennego formatu z uzupełnieniem do 2. Jeżeli podczas obliczeń wykorzystujących typ PLS_INTEGER zostanie przekroczony zakres typu, to pojawi się błąd. Gdy podczas obliczeń wykorzystujących typ BINARY_INTEGER zostanie przekroczony zakres typu, wtedy wynik obliczeń może zostać przypisany zmiennej typu NUMBER (która ma większy zakres) i błąd się nie pojawi. Różnicę pomiędzy tymi dwoma typami danych zaprezentowano w poniższej sesji programu SQL*Plus: SQL> 2 z_calkbin BINARY_INTEGER 3 BEGIN 4 -- Przypisanie maksymalnej wartości do zmiennej z_calkbin 5 z_calkbin:= /* Dodanie 1 do zmiennej z_calkbin (co spowoduje przepełnienie), a 7 następnie odjęcie 1. Wynik tego obliczenia mieści się w zakresie typu 8 BINARY_INTEGER, zatem błąd nie pojawi się */ 9 z_calkbin := z_calkbin

7 10 END; 11 / PL/SQL procedure successfully completed SQL> 2 z_plscalk BINARY_INTEGER 3 BEGIN 4 -- Przypisanie maksymalnej wartości do zmiennej z_plscalk 5 z_plscalk:= /* Dodanie 1 do zmiennej z_plscalk (co spowoduje przepełnienie), a 7 następnie odjęcie 1. Chociaż wynik tego obliczenia mieści się w zakresie typu 8 PLS_INTEGER, to jednak wartość pośrednia nie, zatem pojawi się błąd 9 ORA-1426 */ 10 z_plscalk := z_plscalk END; 12 / * Błąd w linii 1 ORA-01426: nadmiar numeryczny ORA-06512: w linii 10 Typy danych zgodne z formatem IEEE 754 Liczby o pojedynczej i podwójnej precyzji zgodne z formatem IEEE 754 służą do wykonywania obliczeń naukowych. Ich definicja i implementacja wymagają rozwiązania tradycyjnych problemów związanych z przepełnieniem i nieskończonością. Rodzina znakowa Zmienne z rodziny znakowej są wykorzystywane do przechowywania ciągu znaków lub danych znakowych. Rodzina znakowa udostępnia następujące typy: VARCHAR2, CHAR, LONG oraz NCHAR i NVARCHAR2. Typ VARCHAR2 Ten typ danych jest podobny do typu zmiennych bazy danych VARCHAR2. Zmienne typu VARCHAR2 mogą przechowywać ciągi znaków o zmiennej długości, z określoną maksymalną długością. Składnia deklaracji zmiennej tego typu jest następująca: VARCHAR2(L); 7

8 gdzie L oznacza określaną maksymalną długość zmiennej. Podanie tej długości jest konieczne, ponieważ nie występuje dla niej wartość domyślna. Dopuszczalny rozmiar dla zmiennej VARCHAR2 wynosi bajtów. Należy zwrócić uwagę, że kolumna bazy danych VARCHAR2 może przechowywać tylko 4000 bajtów. Jeżeli zmienna PL/SQL typu VARCHAR2 zawiera więcej niż 4000 bajtów, to może zostać wprowadzona do kolumny bazy danych typu LONG o dopuszczalnym rozmiarze 2 gigabajtów (4 gigabajty dla danych typu CLOB). Analogicznie dane typu LONG lub CLOB nie mogą być przydzielone zmiennej typu VARCHAR2, chyba że ich wielkość nie przekracza bajtów. Od wersji Oracle 11g zalecane jest stosowanie typu CLOB, gdyż typ LONG został zachowany tylko na zgodność z poprzednimi wersjami. Długość zmiennej VARCHAR2 jest określana w bajtach, a nie przez podanie liczby znaków. Rzeczywiste dane są zapamiętywane za pomocą określonego zestawu znaków bazy danych, np. zestawu ASCII lub EBCDIC Code Page 500. Jeżeli wśród znaków bazy danych znajdują się znaki wielobajtowe, maksymalna liczba znaków, którą może przechować zmienna typu VARCHAR2, może być mniejsza niż to wynika z jej określonej długości podanej w bajtach. Powodem tego jest ewentualne reprezentowanie pojedynczego znaku przez większą liczbę bajtów. Podtyp VARCHAR lub STRING jest równoważny z typem VARCHAR2. Jaki jest powód istnienia dwóch typów danych VARCHAR i VARCHAR2? Typ VARCHAR został zdefiniowany przez standard ANSI, natomiast typ VARCHAR2 przez firmę Oracle. W chwili obecnej typy te charakteryzują się takimi samymi właściwościami. W przyszłości właściwości ANSI VARCHAR mogą się zmienić, a typ VARCHAR2 pozostanie taki sam. W systemie Oracle składnia deklaracji zmiennej typu VARCHAR2 wygląda następująco: VARCHAR2(L [CHAR BYTE]), gdzie L, podobnie jak w poprzednich wersjach, oznacza maksymalny rozmiar zmiennej. Parametr CHAR lub BYTE jest wykorzystywany do zaznaczenia, czy parametr L ma być wyrażany w bajtach czy w znakach (wartością domyślną jest CHAR). Dla przykładu można założyć, że zestaw znaków bazy danych ustawiono na UTF8 zestaw znaków wielobajtowych o zmiennym rozmiarze. Maksymalny rozmiar znaku w zestawie UTF8 wynosi 3 bajty, co oznacza, ze zmienna zadeklarowana jako VARCHAR2(300 BYTE) może przechowywać maksymalnie jedynie do 100 znaków, w zależności od znaków użytych do zapisania wartości. Typ CHAR Zmienne tego typu są ciągami znaków o stałej długości. Składnia deklaracji zmiennej CHAR jest następująca: CHAR(L); 8

9 gdzie L jest maksymalną długością wyrażoną w bajtach. W odróżnieniu od typu VARCHAR2 określenie długości zmiennej typu CHAR jest opcjonalne. Jeśli długość ta nie jest określona, to jej wartością domyślną jest 1. W takiej sytuacji nie stosuje się również nawiasów. Ponieważ zmienne typu CHAR są ciągami znaków o stałej długości, są one w razie potrzeby dopełniane pustymi znakami do osiągnięcia określonej długości. Jednak ze względu na możliwość uzupełniania ciągu zmiennej znakami pustymi, odpowiedniość zmiennych CHAR przy porównaniach znaków nie zawsze jest spełniona. Dopuszczalny rozmiar wartości zmiennej typu CHAR wynosi bajtów. Dopuszczalny rozmiar kolumny typu CHAR w tabeli bazy danych wynosi 4000 bajtów. Zatem jeżeli zmienna typu CHAR zawiera więcej niż 4000 bajtów jej wartość może zostać wprowadzona tylko do tabeli bazy danych, do kolumny typu VARCHAR2 (jeśli jej długość nie przekracza 4000 bajtów) lub LONG. Analogicznie dane kolumny typu LONG, których wielkość nie przekracza bajtów, mogą być zapisane do kolumny typu CHAR. Długość zmiennej CHAR, podobnie jak długość zmiennej VARCHAR2, nie jest określana w znakach, lecz w bajtach. Jeśli zestaw znaków bazy danych zawiera znaki wielodostępne, maksymalna liczba znaków, jaką może przechowywać zmienna typu CHAR, może być mniejsza niż to wynika z określenia jej długości. CHARACTER jest podtypem typu CHAR i obowiązują go te same ograniczenia. W systemie Oracle składnię deklaracji zmiennej CHAR wygląda następująco: CHAR(L [CHAR BYTE]); gdzie L, podobnie jak w poprzednich wersjach, oznacza maksymalny rozmiar zmiennej. Parametr CHAR lub BYTE jest wykorzystywany do zaznaczenia, czy parametr L ma być wyrażany w bajtach czy w znakach (wartością domyślną jest CHAR). Dla przykładu można założyć, że zestaw znaków bazy danych ustawiono na UTF8 zestaw znaków wielobajtowych o zmiennym rozmiarze. Maksymalny rozmiar znaku w zestawie UTF8 wynosi 3 bajty, co oznacza, ze zmienna zadeklarowana jako CHAR(300 BYTE) może przechowywać maksymalnie jedynie do 100 znaków (w razie potrzeby uzupełniona znakami pustymi), w zależności od znaków użytych do zapisania wartości. Typ LONG W odróżnieniu od typu LONG kolumn tabeli w bazie danych, umożliwiających przechowywanie do 2 gigabajtów danych, zmienna typu LONG języka PL/SQL jest ciągiem znaków o zmiennej długości i dopuszczalnym rozmiarze bajtów. Zmienne te są bardzo podobne do zmiennych typu VARCHAR2. Podobnie jak do nich, do zmiennej PL/SQL typu LONG nie może zostać pobrana kolumna bazy danych typu LONG, która zawiera więcej niż bajtów. Ponieważ 9

10 dopuszczalny rozmiar zmiennej PL/SQL typu LONG jest mniejszy niż dopuszczalny rozmiar kolumny bazy danych typu LONG, ta zmienna PL/SQL może być wprowadzana do kolumny bazy danych typu LONG bez żadnych ograniczeń. Tym niemniej, od Oracle 11g zalecane jest używanie w miejsce typów CLOB lub NCLOB Znaki i łańcuchy znaków Unicode Znaki i łańcuchy znaków Unicode są używane z uwagi na globalizację, do której potrzebne jest kodowanie obsługujące wiele zestawów znaków. Baza danych Oracle udostępnia w tym celu kodowanie AL16UTF16 i UTF8. W tym pierwszym wszystkie znaki zajmują 2 bajty, zaś w drugim 3 bajty. Typ danych NCHAR zestawu Unicode to odpowiednik typu CHAR, zaś NVARCHAR2 odpowiada typowi VARCHAR2. Typ NCHAR oraz NVARCHAR2 Typy znakowe NLS typ NCHAR i typ NVARCHAR2- zostały udostępnione od Oracle8. Typy znakowe NLS są wykorzystywane do przechowywania ciągu znaków w różnych zestawach znaków z samego języka PL/SQL. Ten zestaw jest znany jako narodowy zestaw znaków. Typy NCHAR oraz NVARCHAR2 są zdefiniowane i wykorzystywane w ten sam sposób jak typy CHAR i VARCHAR2. Określenie ich rozmiaru może się jednak różnić dla poszczególnych narodowych zestawów znaków. Rodzina RAW Typy danych zaliczane do rodziny RAW są wykorzystywane do przechowywania danych binarnych. W razie konieczności zmienne znakowe są automatycznie konwertowane przez system Oracle do odpowiednich zestawów znaków. Taka sytuacja może mieć miejsce wtedy, gdy dane są przekazywane przez łącze bazy danych między dwoma bazami, z których każda wykorzystuje inny zestaw znaków. Taka konieczność nie występuje dla zmiennych typu RAW. Typ RAW Zmienne typu RAW są posobne do zmiennych typu CHAR jednak z tą różnicą, że nie są konwertowane między zestawami znaków. Składnia deklaracji zmiennej typu RAW jest następująca: RAW(L) gdzie L jest długością wartości zmiennej wyrażoną w bajtach. Typ RAW jest wykorzystywany do przechowywania danych binarnych o stałej długości. W odróżnieniu od danych znakowych dane typu RAW nie są konwertowane do odpowiednich zestawów znaków podczas przekazywania ich miedzy różnymi bazami danych. Dopuszczalny rozmiar zmiennej typu RAW wynosi

11 bajtów, a dopuszczalny rozmiar kolumny bazy danych typu RAW 2000 bajtów. Jeśli wielkość danych przekracza 2000 bajtów, to dane te nie mogą być wprowadzone do kolumny bazy danych typu RAW. Mogą być jednak wprowadzone do kolumny bazy danych typu LONG RAW, która ma dopuszczalny rozmiar 2 gigabajtów. Analogicznie, gdy wielkość danych przechowywanych w kolumnie bazy danych typu LONG RAW przekracza bajtów, wtedy te dane nie będą mogły zostać pobrane przez zmienną języka PL/SQL typu RAW. LONG RAW Dane typu LONG RAW są podobne do danych typu LONG, ale język PL/SQL nie konwertuje tych danych między zestawami znaków. Dopuszczalny rozmiar zmiennej typu LONG RAW wynosi bajtów. Jeżeli rzeczywista wielkość danych przekracza bajtów, to nie mogą one być wczytane do zmiennej PL/SQL typu LONG RAW, mimo że dopuszczalny rozmiar kolumny bazy danych typu LONG RAW wynosi 2 gigabajty. Jednak w związku z tym, że dopuszczalny rozmiar zmiennej PL/SQL typu LONG RAW mieści się w kolumnie bazy danych typu LONG RAW, nie występuje żadne ograniczenie dotyczące wprowadzania zmiennej PL/SQL typu LONG RAW do kolumny bazy danych typu LONG RAW. Od Oracle 11g jest zalecanym w miejsce typu LONG RAW stosować typ BLOB lub BFILE. Rodzina daty i czasu Rodzina daty i czasu zawiera trzy typy: DATE, TIMESTAMP oraz INTERVAL (ostanie dwa są dostępne od Oracle9i). Typ DATE Typ DATE języka PL/SQL jest identyczny z typem DATE bazy danych. Type DATE jest wykorzystywany do przechowywania informacji dotyczących daty i czasu (w tym: wieku, roku, miesiąca, dnia, godziny, minuty oraz sekundy). Zmienna typu DATE ma rozmiar 7 bajtów, przy czym jeden bajt jest zarezerwowany dla każdego składnika (od wieku do sekundy). W danych typu DATE nie przechowuje się części sekundy. Do danych typu DATE wartości są przypisywane za pomocą zmiennych znakowych lub innych wartości typu DATE. Zmienne znakowe są niejawnie konwertowane na daty z wykorzystaniem domyślnego formatu daty dla bieżącej sesji. Aby uzyskać większą kontrolę nad danymi w czasie przypisywania wartości danym typu DATE, można wykorzystać wbudowaną funkcje TO_DATE. Z kolei funkcja TO_CHAR może okazać się przydatna do pobierania danych ze zmiennych typu DATE. Typ TIMESTAMP Typ TIMESTAMP jest podobny do typu DATE w tym znaczeniu, że służy do przechowywania informacji dotyczących roku, miesiąca, dnia, godziny, minuty, sekundy dla określonych punktów w 11

12 czasie. Jednak w przypadku typu TIMESTAMP istnieje możliwość zapisu części sekundy. Składnia deklaracji zmiennej typu TIMESTAMP jest następująca: TIMSTAMP[(P)], gdzie P oznacza dokładność pola części sekundy (wartością domyślną jest 6). Typ INTERVAL Typ INTERVAL służy do przechowywania informacji o odcinku czasu pomiędzy dwoma punktami czasowymi. Dana typu INTERVAL YEAR TO MONTH przechowuje informację o liczbie lat i miesięcy. Definiuje się ją w następujący sposób: INTERVAL YEAR[(P)] TO MONTH, gdzie P oznacza liczbę cyfr pola roku (wartość domyślna wynosi 2). Dana typu INTERVAL DAY TO SECOND przechowuje informację o liczbie dni i sekund. Definiuje się ją w następujący sposób: INTERVAL DAY[(DP)] TO SECOND[(SP)], gdzie DP oznacza liczbę cyfr pola dnia (wartość domyślna wynosi 2), natomiast DP liczbę cyfr pola części sekund (wartością domyślną jest 6). Rodzina logiczna Jedynym typem danych w rodzinie logicznej (boolowskiej) jest typ BOOLEAN. Zmienne logiczne są wykorzystywane w strukturach sterowania języka PL/SQL. Zmienna typu BOOLEAN może przechowywać jedynie następujące wartości: TRUE, FALSE lub NULL.. Poniższa sekcja deklaracji jest nieprawidłowa, ponieważ 0 nie jest poprawną wartością typu BOOLEAN: z_zmienna BOOLEAN:=0; Rodzina identyfikatora wiersza Rodzina identyfikatora wiersza zawiera dwa typy danych: ROWID oraz UROWID. Typ ROWID Typ ROWID języka PL/SQL jest identyczny z typem pseudokolumny bazy danych ROWID. Może on przechowywać identyfikator wiersza rowid, który można traktować jako unikalny klucz każdego wiersza bazy danych. Identyfikatory wierszy rowid są przechowywane wewnętrznie jako wielkości binarne o stałej długości, zależnej od systemu operacyjnego. Zazwyczaj programy PL/SQL nie tworzą identyfikatorów wierszy są one pobierane z pseudokolumny ROWID tabeli. Tak uzyskaną wartość można następnie wykorzystać w klauzuli WHERE w następnej instrukcji UPDATE lub DELETE. 12

13 Typ UROWID Chociaż każdy wiersz w tabeli bazy danych Oracle posiada adres, to nie musi to być adres fizyczny. przykładowo, wiersze w tabelach wykorzystujących indeksy posiadają logiczne identyfikatory wierszy, które są określane na podstawie głównego klucza tabeli. Typ danych UROWID może służyć zarówno do przechowywania fizycznych identyfikatorów wierszy (tzn. danych typu ROWID), jak i logicznych identyfikatorów wierszy. Firma Oracle nawet zaleca wykorzystanie typu UROWID w nowych aplikacjach, ponieważ jest on bardziej uniwersalny. Duże obiekty (typ LOB) Duże obiekty (typy LOB) obejmują cztery typy danych: BFILE, BLOB, CLOB i NCBLOB. Przykładowo, typ BFILE wskazuje plik zewnętrzny, a jego rozmiar maksymalny wynosi 4 gigabajty. Typy BLOB, CLOB i NCLOB to typy, których maksymalna wielkość wynosi od 8 do 128 terabajtów (zależy to od wartości parametru db_bloc_size). Kolumny LOB zawierają tzw. lokalizator, który wskazuje na miejsce przechowywania danych. Pełni on także funkcję wskaźnika umożliwiającego odczyt danych i ich zapis do kolumn typu LOB. Podtypy definiowane przez użytkownika Jak wiemy ze wcześniejszych rozważań dotyczących typów predefiniowanych, podtyp jest typem danych PL/SQL, który jest opary na już istniejącym typie. Podtyp jest zaliczany do tej samej rodziny typów, do której należy jego typ bazowy. Zastosowanie podtypu w kodzie programu języka PL/SQL ma różnorakie zastosowanie, choćby, co jest chyba najbardziej oczywiste, typowi zostaje przydzielona inna nazwa, co ma wskazywać na jego specyficzne wykorzystanie. Składnia deklaracji podtypu jest następująca: SUBTYPE nowy_podtyp IS typ_oryginalny; gdzie nowy_podtyp jest nazwą nowego podtypu, a typ_oryginalny jest nazwą typu bazowego, do którego odnosi się nowo zdefiniowany podtyp. Typ, na którym opiera się nowo zdefiniowany podtyp może być zarówno uprzednio zdefiniowanym podtypem, jak i odsyłaczem %TYPE. Ilustruje to poniższy przykład: SUBTYPE t_licznik IS NUMBER; -- zdefiniowany nowy podtyp z_licznikpetlifor t_licznik; SUBTYPE t_nazwaproduktu IS produkty.nazwa%type; -- zdefiniowany nowy podtyp z_produktyspożywcze t_nazwaproduktu -- zadeklarowana zmienna podtypu 13

14 W przypadku deklaracji podtypu do wersji Oracle8i istniała zasada, iż nie można ograniczać bezpośrednio podtypu w jego definicji. Poniższy blok programu ilustruje taką nieprawidłową definicję podtypu: SUBTYPE t_licznik IS NUMBER(5); Okazuje się, iż można jednak poradzić sobie z tym ograniczeniem, deklarując fikcyjną zmienną pożądanego typu, która jest ograniczona, a następnie wykorzystać atrybut %TYPE w definicji podtypu. Sytuację tego typu ilustruje poniższy przykład kodu: z_zmiennafikcyjna NUMBER(5); -- zmienna fikcyjna, która nie będzie używana SUBTYPE t_licznik IS z_zmiennafikcyjna; -- podtyp, który zwraca NUMBER(5) z_licznikpetlifor t_licznik; -- zmienna ograniczona nowego podtypu Deklaracje zmiennych wykorzystujące podtyp nieograniczony w swej definicji mogą ograniczać typ, co ilustruje poniższy przykład: SUBTYPE t_liczba IS NUMBER; z_licznik t_liczba(5); -- definicja podtyp nieograniczonego -- ograniczona zmienna. Deklaracje zakotwiczone Częstą sytuacją jest wykorzystywanie przez programistę zmiennych PL/SQL do przetwarzania danych przechowywanych w tabeli bazy danych. W takim przypadku zmienna powinna być tego samego typu jak typ danych kolumny tabeli i niekiedy mówi się, iż programista chce zakotwiczyć (ang. anchor) deklarację zmiennej do kolumny w bazie danych. Przykładowo, kolumna nazwa należąca do tabeli produkty przechowuje dane typu VARCHAR2(30). Dlatego też tego rodzaju zmienną można zadeklarować w następujący sposób: z_nazwa VARCHAR2(30); Choć powyższy sposób zadeklarowania zmiennej języka PL/SQL jest jak najbardziej poprawny, tym niemniej istnieje bardziej dogodny sposób jej zadeklarowania, który lepiej dopasowuje ją do typu danych kolumny tabeli bazy danych. Wynika to m.in. z faktu, iż typ danych pola nazwa w tabeli produkty może ulegać zmianom, zarówno co do rodzaju, jak i składni. Zamiast więc samodzielnie sprawdzać typy danych można w tym celu posłużyć się kompilatorem PL/SQL. Przykładowo, jeśli po dokonaniu tych zmian kolumn nazwa przechowywałaby dane typu 14

15 VARCHAR2(40), to kod PL/SQL wykorzystujący tę kolumnę, aby był z nim zgodny musiałby być zmieniony w następujący sposób z_nazwa VARCHAR2(40); Tego rodzaju postępowanie w przypadku dużych rozmiarów kodu PL/SQL mogłoby być czasochłonne i powodować powstanie wielu błędów, szczególnie w przypadku modyfikacji typów danych pól w tabelach bazy danych. W takiej sytuacji zamiast dokonywania zmian typów zmiennych w istniejącym kodzie, zaleca się wykorzystanie atrybutu %TYPE. Atrybut %TYPE jest dołączany do odsyłacza kolumny tabeli lub do innej zmiennej i zwraca jej typ, np. z_nazwa towary.nazwa%type; Tego typu deklaracje zmiennych PL/SQL są określane mianem deklaracji zakotwiczonych (ang. anchored declarations). W ten sposób zastosowanie atrybutu %TYPE zapewnia, ze wartość zmiennej z_nazwa jest takiego samego typu, jak dane przechowywane w kolumnie nazwa w tabeli produkty. Typ danych jest określany za każdym razem podczas uruchamiania bloku dla anonimowych lub nazwanych bloków oraz podczas kompilacji przechowywanych obiektów (procedur, funkcji, itd.). W ten sposób wykorzystanie deklaracji zakotwiczonych ma jeszcze tę dodatkową zaletę, iż w przypadku, gdy typ danych lub długość kolumny w bazie danych ulegnie zmianie, generalnie program automatycznie dostosowuje się do nowego typu danych. Uwaga. W niektórych przypadkach zmiany definicji kolumn tabeli bazy danych mogą powodować pewne problemy. Przykładowo, jeśli wziąć pod uwagę przypadek zmiany typu danych kolumny tabeli z NUMBER na DATE, to konsekwencją tego może być konieczność sprawdzenia utworzonego wcześniej kodu programu PL/SQL z wykorzystanymi deklaracjami zakotwiczonymi i dodania funkcji konwersji TO_DATE. Innym sposobem użycia atrybutu %TYPE jest również wykorzystywanie go do wcześniejszej deklaracji zmiennej PL/SQL. W przypadku wykorzystania atrybutu %TYPE dla deklaracji zmiennej lub kolumny, których wartość jest ograniczona do ustawienia NOT NULL, zwracany typ nie ma tego ograniczenia. Stosowanie atrybutu %TYPE świadczy o dobrym stylu programowania, ponieważ w ten sposób program PL/SQL staje się bardziej elastyczny. Łatwiej też go przystosować do zmieniających się definicji bazy danych. 15

16 Konwersja pomiędzy typami danych Niekiedy pożądaną sytuacją jest konieczność konwersji jednego typu danych skalarnych w inny, nawet niekoniecznie należący do tej samej rodziny typów. Język PL/SQL posiada możliwość obsługi konwersji danych pomiędzy różnymi rodzinami typów wśród skalarnych typów danych. Wewnątrz rodziny typów danych można konwertować dane należące do różnych typów bez ograniczeń. Od tej reguły wyjątkiem są tylko pewne ograniczenia nałożone na zmienne, np. zmienna typu CHAR(10) nie może być przekonwertowana do zmiennej typu VARCHAR2(1) ze względu na wolny obszar w pamięci. Podobnie ograniczenia precyzji i skali mogą uniemożliwiać konwersję pomiędzy typem NUMBER(3,2), a typem NUMBER(3). W przypadkach naruszeń związanych z ograniczeniami, kompilator PL/SQL nie generuje błędu. Tym niemniej w takich sytuacjach może wystąpić błąd wykonania (w zależności od wartości konwertowanych zmiennych). Niezależnie od typów danych wyróżniamy dwa rodzaje konwersji: jawną i niejawną. Jawna konwersja typów danych W przypadku konwersji jawnej (ang. explicit conversion) wykorzystywane są wbudowane funkcje służące do przeprowadzania konwersji. Funkcje te są dostępne zarówno w języku SQL, jak i w języku PL/SQL. Można je wykorzystywać w razie potrzeby do wykonania konwersji jawnej pomiędzy zmiennymi różnych rodzin typów danych. Poniższa tabela podaje krótki opis i przeznaczenie tych funkcji. Tabela 3.3. Funkcje konwersji typów danych języków SQL i PL/SQL Funkcja Opis Konwertowane rodziny TO_CHAR Konwertuje argumenty do typu VARCHAR2 w zależności od opcjonalnego specyfikatora Numeryczna, daty i czasu formatu TO_DATE Konwertuje argumenty do typu DATE w Znakowa zależności od opcjonalnego specyfikatora formatu TO_TIMESTAMP Konwertuje argumenty do typu Znakowa TIMESTAMP w zależności od opcjonalnego specyfikatora formatu TO_TIMESTAMP_TZ Konwertuje argumenty do typu Znakowa TIMESTAMP WITH TIMEZONE w zależności od opcjonalnego specyfikatora formatu TO_DSINTERVAL Konwertuje argumenty do typu INTERVAL Znakowa 16

17 TO_YMINTERVAL TO NUMBER RAWTOHEX HEXTORAW CHARTOROWID ROWIDTOCHAR DAY TO SECOND w zależności od opcjonalnego specyfikatora formatu Konwertuje argumenty do typu INTERVAL YEAR TO MONTH w zależności od opcjonalnego specyfikatora formatu Konwertuje argumenty do typu NUMBER w zależności od opcjonalnego specyfikatora formatu Konwertuje wartość RAW do szesnastkowej reprezentacji wielkości binarnej Konwertuje szesnastkową reprezentację do równoważnej wielkości binarnej Konwertuje znakową reprezentację danych typu ROWID do wewnętrznego formatu binarnego Konwertuje wewnętrzną, binarną zmienną ROWID do zewnętrznego formatu 18- znakowego Znakowa Znakowa Raw Znakowa (musi być w formacie szesnastkowym) Znakowa (musi być w 18-znakowym formacie identyfikatora wiersza - ROWID) Identyfikatora wiersza (ROWID). Niejawna konwersja typów W przypadkach, których jest to tylko możliwe, język PL/SQL dokonuje automatycznej konwersji danych należących do różnych rodzin typów danych, tzw. konwersję niejawną (ang. implicit conversion). Poniższy przykład ilustruje tego typu sytuację: z_aktualnystanmagazyn VARCHAR2(10); BEGIN SELECT stan INTO z_aktualnystanmagazyn FROM towary WHERE id_prod = 25; 17

18 W bazie danych stan jest polem typu NUMBER(7,2). Ale z_aktualnystanmagazyn jest zmienną typu VARCHAR2(10). Mimo tej niezgodności typów, program PL/SQL automatycznie przekonwertuje dane numeryczne na ciąg znaków, który przydzieli zmiennej znakowej. Program PL/SQL może dokonać konwersji pomiędzy: znakami i liczbami, znakami i datami. Pomimo, niewątpliwej zalety języka PL/SQL, jaką jest konwersja pomiędzy typami danych, to jednak zgodnie z dobrą praktyką programowania należy stosować funkcję konwersji jawnej, aby nie doszło do jakiś nieporozumień związanych z analizą kodu programu języka PL/SQL. Poniższy przykład jest modyfikacją ostatniego przykładu i ilustruje wykorzystanie funkcji TO_CHAR do konwersji jawnej: z_aktualnystanmagazyn VARCHAR2(10); BEGIN SELECT TO_CHAR(stan) INTO z_aktualnystanmagazyn FROM towary WHERE id_prod = 25; Zaletą takiego działania jest to, iż jawny format ciągu znaków w razie potrzeby może być również wykorzystany dla funkcji TO_CHAR. Zwiększa to czytelność programu i akcentuje konwersję typu. Deklarowanie zmiennych W momencie deklarowania zmiennej PL/SQL przydziela pewien obszar pamięci w celu przechowania wartości oraz nadaje nazwę lokacji, w której znajduje się ta zmienna. W ten sposób możliwym staje się pobieranie i zmienianie jej wartości. Ponadto deklaracja służy do określenia typu zmiennej, koniecznego w celu zweryfikowania wartości przypisywanych zmiennej w trakcie działania programu. Składnia deklaracji zmiennej ma postać: nazwa_zmiennej TYP_DANYCH [ CONSTANT ] [ := DEFAULT wartosc_poczatkowa ]; gdzie: nazwa_zmiennej jest to nazwa deklarowanej zmiennej PL/SQL musi być zgodna z zasadami nadawania nazw identyfikatorom PL/SQL; TYP_DANYCH określa rodzaj danych, przechowywanych przez zadeklarowaną zmienną; 18

19 CONSTANT wstawienie tego opcjonalnego słowa kluczowego do deklaracji zmiennej powoduje, iż program nie może zmieniać wartości tej zmiennej jest ona traktowana w programie jako stała. := DEFAULT wystąpienie tego opcjonalnego wyrażenia do deklaracji zmiennej powoduje, iż zmiennej zostanie przypisana pewna wartość początkowa, różna od NULL, równa wartości tego wyrażenia. Proces ten nazywa się inicjalizacją zmiennej. W celu określenia przypisywanej wartości początkowej deklarowanej zmiennej można użyć albo operatora przypisania :=, albo słowa kluczowego DEFAULT; wartosc_poczatkowa jest to literał odpowiedni do typu danych zmiennej, który jest zadeklarowany w TYP_DANYCH. Jest on używany do określenia wartości początkowej zmiennej, a jego pominięcie oznacza, iż w momencie deklaracji zmiennej została przypisana wartość NULL. wartosc_poczatkowa może być literałem, wcześniej zadeklarowaną zmienną lub wyrażeniem. Inicjalizacja zmiennej podczas jej deklarowania służy uproszczeniu kodu, gdyż często pierwszą instrukcją bloku wykonania jest właśnie przypisanie zmiennej wartości początkowej. Poniższy przykład ilustruje deklarację zmiennej bez wartości początkowej (NULL) i z przypisaną wartością początkową (różną od NULL): z_liczbazakupow NUMBER:=0; (lub z_liczbazakupow NUMBER DEFAULT 0); z_pelnedaneklienta VARCHAR2(100); Poniżej zaprezentowano przykłady efektywnych deklaracji zmiennych PL/SQL: efektywna w wykorzystaniu zmienna typu PLS_INTEGER zainicjalizowana maksymalną dopuszczalną wartością: z_maksplsint PLS_INTEGER:= ; zmienna liczbowa o domyślnej wartości, która jest wynikiem działania arytmetycznego: z_maksoplatakarna NUMBER:=5*1550; zmienna logiczna o wartości początkowej, która jest wynikiem złożonego wyrażenia: z_wycofanieklienta BOOLEAN:=GREATEST(TO_NUMBER(TO_CHAR(data_faktury, YYYY )))<TO_NU MBER(TO_CHAR(SYSDATE YYYY ))-1; 19

20 wielkość, która nie podlega zmianom, i z tego powodu jest zadeklarowana jako stała, co wymaga podania wartości początkowej: z_wiekzatrudnienia CONSTANT NUMBER:=18; Ostatni przedstawiony powyżej przypadek deklaracji zmiennej, jest szczególnym rodzajem zmiennej określanej jako stała nazwana (ang. named constant). Tego typu zmienne (traktowane jako stałe) mają swoją nazwę, typ i wartość, podobnie jak inne zmienne. Jednak w przeciwieństwie do nich, wartość tego typu zmiennych musi być zainicjowana podczas deklaracji i nie można przypisać im innej wartości w dalszej części programu. Zakres i widoczność zmiennej Zakres (ang. scope) zmiennej jest fragmentem programu, w której można się do tej zmiennej odwoływać (tzn. odczytywać ją lub zmieniać jej wartość). Dla zmiennej PL/SQL zakresem jest obszar od deklaracji zmiennej do końca bloku, inaczej mówiąc blok, w którym jest deklarowana. Kiedy zmienna wychodzi poza swój zakres, wówczas język PL/SQL zwalnia pamięć wykorzystywaną do przechowywania tej zmiennej, ponieważ nie można się już do niej odwołać. Powyższą zasadę ilustruje poniższy przykład: Zakres zmiennej z _StanMagazyn z _StanMagazyn NUMBER BEGIN z _ Pr odukt VARCHAR 2(25);... END;... END; Zakres zmiennej z _ Pr odukt W powyższym przykładzie kodu programu PL/SQL w bloku głównym (zewnętrznym) znajduje się blok zagnieżdżony (wewnętrzny). Do zmiennej z_produkt można odwołać się tylko w obrębie bloku wewnętrznego, czyli w tej części programu, gdzie ta zmienna ma swój zasięg. W razie odwołania do tej zmiennej w bloku głównym (zewnętrznym) wystąpi błąd kompilacji: PLS-00201: identyfikator z_produkt powinien być zadeklarowany. 20

21 Zasięg zmiennej zawiera się w bloku, w którym została ona zadeklarowana. Wyjątkiem od tej zasady jest zmienna pakietowa (ang. package-based variable). W ten sposób język PL/SQL dzięki tej właściwości pozwala na definiowanie globalnych struktur danych, które są dostępne z poziomu innych programów, uruchamianych w trakcie sesji. Przez widoczność zmiennej rozumie się tę część programu, w której zmienna może być dostępna bez konieczności określania odwołania. Jak wynika z powyższej definicji, widoczność zmiennej zawsze znajduje się wewnątrz zakresu zmiennej. Jest oczywistym fakt, iż jeżeli zmienna jest poza swoim zakresem, to nie jest widoczna. W tym momencie należy określić sposób odwoływania się w programie do zmiennej, która znajduje się w swoim zakresie, ale nie jest widoczna. Sposób ten ilustruje poniższy przykład kodu programu, w którym blok główny zawiera blok zagnieżdżony: <<e_zewn>> z_zm1 z_zm2 BEGIN... NUMBER; VARCHAR2; Zmienne z_zm1 NUMBER oraz z_zm2 są widoczne z_zm1 z_zm3 BEGIN... END;... END; DATE; VARCHAR2; Zmienne z_zm1 NUMBER oraz z_zm2 są widoczne Zmienne z_zm1, z_zm2 oraz z_zm3 są widoczne. Można odwołać się do zmiennej z_zm1 NUMBER dzięki etykiecie e_zewn.z_zm1 Powyższy przykład przedstawia blok główny PL/SQL, który zawiera blok zagnieżdżony. W obu blokach została zadeklarowana zmienna o tej samej nazwie z_zm1, choć o różnych typach. Zmienna z_zm1 typu tekstowego zadeklarowana w bloku zagnieżdżonym przysłania w tym bloku zmienną numeryczną z_zm1. A zatem choć zakres zmiennej z_zm1 typu NUMBER rozciąga się również na blok zagnieżdżony, to jest ona w nim niewidoczna. Jak wynika z powyższego przykładowego kodu PL/SQL, aby odwołać się do zmiennej w tej części programu, w której nie jest ona widoczna, blok 21

22 PL/SQL powinien przede wszystkim zostać nazwany poprzez dołączenie etykiety (w tym przypadku <<e_zewn>>). Wówczas, aby odwołać się do zmiennej z_zm1 typu NUMBER, która jest zadeklarowana w bloku zewnętrznym, a nie jest widoczna w bloku zagnieżdżonym, należy zastosować następującą konstrukcję: e_zewn.z_zm1. Jeśli zatem identyfikator zmiennej poprzedzimy identyfikatorem nazwy bloku zewnętrznego, to w bloku zagnieżdżonym mamy możliwość odwoływać się do zmiennych niewidocznych w tej części programu, które są oczywiście w nim dostępne. Wyrażenia i operatory Na przetwarzanie danych z wykorzystaniem zmiennych pozwalają operatory i wyrażenia. Operator jest słowem kluczowym lub symbolem, który jest wykorzystywany przez język do wykonywania funkcji arytmetycznych, logicznych i innych. Operatory definiują zatem, w jaki sposób wartości są przydzielane zmiennym oraz jak te wartości są później przetwarzane. Kategoria operatorów Notacja 22 Typ operatora Znaczenie Przypisania := Binarny Zachowanie wartości Arytmetyczne ** Binarny Potęgowanie * Binarny Mnożenie, dzielenie / Binarny - Binarny Odejmowanie + Binarny Dodawanie Logiczne AND Binarny Koniunkcja Operatory relacyjne -porównania (oprócz wartości NULL) OR Binarny Alternatywa NOT Unarny Negacja = Binarny Równość <> lub!= Binarny Nierówność < Binarny Mniejszy niż > Binarny Większy niż <= Binarny Mniejszy bądź równy >= Binarny Większy bądź równy IN Binarny Zawieranie się BETWEEN Binarny Zawieranie w przedziale **, NOT Binarny Potęgowanie, logiczna negacja Porównania (wartości NULL) IS NULL Unarny Test na wartość NULL IS NOT NULL Unarny Test na wartość różną od NULL Tekstowe Binarny Konkatenacja ciągów znaków LIKE Binarny Pasowanie do wieloznacznika

23 W powyższej tabeli zestawiono operatory języka PL/SQL. Kolejność ich wykonywania, określana mianem pierwszeństwa, jest analogiczna do wykonywania działań w arytmetyce i logice. Jeśli funkcje występują w tej samej linii, oznacza to, że wykonywane są z tym samym poziomem pierwszeństwa, a zatem o kolejności ich wykonania decyduje miejsce wyrażenia w linii programu. Sekwencję zmiennych i literałów oddzielonych od siebie operatorami nazywamy wyrażeniem. Wartość wyrażenia jest ustalana na podstawie wartości zmiennych składowych i literałów oraz definicji operatorów. Operator przypisania Podstawowym operatorem jest przede wszystkim przypisanie. Składnia tego operatora jest następująca: zmienna := wyrażenie; gdzie zmienna jest zmienną PL/SQL, a wyrażenie jest wyrażeniem języka PL/SQL. Wielkość, która może się pojawić po lewej stronie operatora przypisania, znana jest jako wielkość lewa lvalue, a wielkość która może pojawić się po jego prawej stronie, nazywana jest wielkością prawą rvalue. Wielkość lewa lvalue musi odwoływać się do rzeczywistego miejsca pamięci, ponieważ wielkość prawa rvalue zostanie tam wpisana. Przypisania są dozwolone w dowolnej sekcji programu. Należy zaznaczyć, iż umieszczenie tej operacji w sekcji deklaracji ma zazwyczaj na celu inicjalizację wartości zmiennej przed jej użyciem w programie lub zdefiniowanie wartości, które będą wykorzystywane w programie jako stałe. Poniżej podano kilka przykładów przypisań: z_tekst1 VARCHAR2(25); z_tekst2 VARCHAR2(30); z_num NUMBER; BEGIN z_tekst1 := Napój pomarańczowy ; z_teks2 := Firma ABC ; z_num NUMBER := -12,4; END; W powyższym przykładzie wszystkie wielkości lewe lvalue są zmiennymi. Mechanizm PL/SQL przydziela zmiennym obszary pamięci tak, aby wartości Napój pomarańczowy, Firma ABC i - 12,4 mogły zostać do nich wprowadzone. Wielkość prawa rvalue może być zawartością obszaru pamięci (do którego odwołuje się zmienna) lub literałem. Powyższy przykład uwzględnia obydwa 23

24 przypadki: Napój pomarańczowy jest literałem, a z_tekst1 zmienną. Wielkość prawa rvalue będzie odczytywana, natomiast do wielkości lewej będzie dokonywany zapis. Wszystkie wielkości lvalue są również wielkościami prawymi rvalue. W języku PL/SQL nie można wykonać jednocześnie więcej niż jednego przypisania. W odróżnieniu od takich języków jak C poniższe przypisanie jest niedozwolone: z_zm1 NUMBER; z_zm2 NUMBER; z_zm3 NUMBER; BEGIN z_zm1 := z_zm2 := z_zm3 :=0; END; Wyrażenia Wyrażenia PL/SQL są wielkościami prawymi rvalue. Samo wyrażenie nie ma znaczenia, gdy nie jest częścią instrukcji. Przykładowo, wyrażenie może pojawić się po prawej stronie operatora przypisania lub jako cześć instrukcji SQL. Operatory tworzące wyrażenie wraz z typem ich operandów określają typ wyrażenia. Operand jest argumentem operatora. Operatory PL/SQL pobierają albo jeden argument (operator unarny), albo dwa argumenty (operator binarny). Np. operator nagacji (-) jest operatorem unarnym, natomiast operator mnożenia (*) operatorem binarnym. W poniższej tabel 3.5 wymieniono operatory uporządkowane w zależności od posiadanego priorytetu (od najwyższego do najniższego). Wyrażenia znakowe Znakowy operator, którym jest operator konkatenacji ( ), łączy dwa ciągi znaków alfanumerycznych (lub argumentów, które mogą być niejawnie konwertowane do ciągu znaków). Jeżeli wszystkie operandy są w wyrażeniu konkatenacji typu CHAR, to wynik wyrażenia jest typu CHAR. Gdy chociaż jeden z operandów jest typu VARCHAR2, wówczas wynik wyrażenia jest typu VARCHAR2 Wyrażenia logiczne Wszystkie struktury sterowania PL/SQL (z wyjątkiem GOTO) zawierają wyrażenia logiczne (boolowskie), zwane również warunkami. Wyrażeniem logicznym jest każde wyrażenie, którego wynikiem jest wartość logiczna (TRUE, FALSE lub NULL). 24

25 Trzy operatory logiczne iloczyn logiczny AND, suma logiczna OR oraz negacja logiczna NOT pobierają argumenty logiczne i zwracają wartości logiczne. Operatory te działają na zasadach standardowej, trójwartościowej logiki. NOT TRUE FALSE NULL FALSE TRUE NULL AND TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE FALSE NULL NULL FALSE NULL OR TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NULL TRUE NULL NULL Oczywiście operatory logiczne można ze sobą łączyć, np. z_z1 AND z_z2 OR z_z3 AND NOT z_z4, przy czym należy podkreślić, iż zmienne PL/SQL z_z1, z_z2, z_z3 i z_z4 są zadeklarowane jako zmienne typu BOOLEAN. Choć istnieją ścisłe reguły kolejności wykonywania działań (najpierw NOT, potem AND i w końcu OR), za pomocą których PL/SQL oblicza rezultat, jednak znacznie lepszym rozwiązaniem jest używanie nawiasów, dzięki którym wyrażenie staje się bardzie czytelne: (z_z1 AND z_z2) OR (z_z3 AND (NOT z_z4)). Ponieważ w PL/SQL obowiązuje logika trójwartościowa (oprócz TRUE i FALSE mamy jeszcze wartość nieokreśloną NULL), a zatem sprawdzenie dość skomplikowanego wyrażenia logicznego można przysporzyć niekiedy kłopotów i dlatego lepiej zapisywać je w sposób, który nie budzi sprzeczności, co do kolejności wykonywania operacji logicznych. Typy danych definiowane przez użytkownika Powyżej zostały omówione najprostsze i najczęściej używane typy danych tzw. typy skalarne (NUMBER, VARCHAR2, itd.), które są predefiniowane w pakiecie STANDARD. Tym niemniej PL/SQL oferuje wiele innych typów danych, w tym także typy danych definiowane przez użytkownika. Przed zastosowaniem złożonego typu w bloku programu konieczna jest oczywiście jego deklaracja, a następnie zadeklarowanie zmiennych tego typu. Wśród złożonych typów danych oferowanych przez PL/SQL wyróżniamy: 25

26 rekord (ang. record) jest złożonym typem danych (ang. composite datatype) co oznacza, iż pojedynczy rekord może zawierać wiele elementów informacji różnego typu kolekcja (ang. collection) jest to jednowymiarowa tablica w wersji specyficznej dla PL/SQL. Kolekcja służy do przechowywania list danych i w wielu przypadkach jej zastosowanie zwiększa wydajność aplikacji. obiekt (ang. object) jest to struktura podobna do rekordu. Jako typ złożony zawiera zarówno atrybuty (zmienne innych typów), jak i metody (podprogramy). Użycie typu obiektowego pozwala wykorzystać dodatkowe możliwości programowania, jakie oferuje programowanie zorientowane obiektowo. Oczywiście można by sobie wyobrazić programowanie w języku PL/SQL bez stosowania tych złożonych typów danych, czego nie dałoby się już powiedzieć o skalarnych typach danych, które są w tym przypadku praktycznie nieodzowne. Tym niemniej stosowanie w programie języka PL/SQL typów danych definiowanych przez użytkownika, zwiększa jego czytelność i jest samo w sobie bardziej interesującą pracą. Poniżej omówimy rekordowy typ danych, natomiast kolekcje i obiekty zostaną omówione nieco później podczas analizy zagadnień związanych z programowaniem w języku PL/SQL. Rekordy w języku PL/SQL Rekord jest złożonym typem danych i składa z pojedynczych, logicznie ze sobą powiązanych elementów, które zwane są polami (ang. fields). Z każdym polem jest skojarzona pewna wartość i jest on dostępny oddzielnie w ramach rekordu. Każde pole w rekordzie ma swoją nazwę i jest najczęściej skalarnego typu. Tym niemniej polem w rekordzie może być również np. rekord. Wykorzystanie typów rekordowych pozwala abstrakcyjnie powiązać ze sobą dane w jedną całość, ponieważ pracujemy z grupą danych, a nie z poszczególnymi elementami. Na ogół taki zabieg pozwala na uproszczenie kodu programu, dzięki czemu staje się on bardziej efektywny i zrozumiały. Rekordy języka PL/SQL są podobne do struktur języka C. Rozważmy następujący przykład deklaracji informacji związanych z danymi o produkcie: z_id z_nazwa z_cena z_wycofany NUMBER; VARCHAR2(30); NUMBER(7,2); CHAR(3); Wszystkie z powyższych trzech zmiennych są ze sobą logicznie powiązane, ponieważ odwołują się do wspólnych pól w tabeli bazy danych towary. A zatem są ze sobą w pewien abstrakcyjny sposób 26

27 powiązane, co umożliwia ich połączenie w jedną całość za pomocą odpowiednio zdefiniowanego rekordu. /* Zdefiniowanie typu rekordu do przechowywania wspólnych danych o produkcie */ TYPE t_rekordprodukt IS RECORD ( z_id NUMBER, z_nazwa VARCHAR2(30), z_cena NUMBER(7,2), z_wycofany CHAR(3) ); /* Zadeklarowanie zmiennej zdefiniowanego powyżej typu rekordowego t_rekordprodukt*/ z_daneproduktu t_rekordprodukt ; Po zadeklarowaniu dla tych zmiennych typu rekordu relacja między nimi staje się bardziej widoczna i można nimi manipulować, tak jakby tworzyły one pewną całość. Definiowanie rekordu Ponieważ rekord jest złożonym typem danych, to w przeciwieństwie do zmiennych skalarnych, które są definiowane jawnie poprzez jawną deklarację zmiennych poszczególnych typów, zmienną typu rekordowego definiujemy najpierw określając sam typ rekordowy, a dopiero następnie deklarujemy zmienną tego typu. A zatem ogólna postać składni definicji typu rekordowego jest następująca: TYPE nazwa_typu_rekord IS RECORD ( nazwa_pola1 TYP_DANYCH [NOT NULL] [DEFAULT := wyrazenie1], nazwa_pola2 TYP_DANYCH [NOT NULL] [DEFAULT := wyrazenie2],... nazwa_pola TYP_DANYCH [NOT NULL] [DEFAULT := wyrazenien] ); gdzie: nazwa_typu_rekord jest nazwą nowego typu, który określa strukturę nowego rekordu zawierającego N pojedynczych pól; nazwa_pola1... nazwa_polan są nazwami pól wewnątrz rekordu. Każde pole może być innego typu może to być typ skalarny, typ użytkownika lub inny typ rekordowy; 27

Typy danych w języku PL/SQL

Typy danych w języku PL/SQL Typy danych w języku PL/SQL W systemie Oracle 7 język PL/QSL udostępniał trzy kategorie typów: skalarne, złożone, odwołania. W systemie Oracle 8 zdefiniowano dwie dodatkowe kategorie typów: typ LOB, typy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

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

PL/SQL. Lidia Małkiewicz i Cezary Skubała PL/SQL Lidia Małkiewicz i Cezary Skubała Jest językiem trzeciej generacji (3GL), który udostępnia konstrukty programistyczne, włączając w to deklaracje zmiennych, pętlę, obsługę błędów itd. Obecnie PL/SQL

Bardziej szczegółowo

1. ELEMENTY JĘZYKA PL/SQL

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

Bardziej szczegółowo

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji

Bardziej szczegółowo

Język PL/SQL Wprowadzenie

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

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Język PL/SQL Wprowadzenie

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

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁY DO ZAJĘĆ II MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych

Bardziej szczegółowo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem

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

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

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 4. SQL praca z tabelami 1

Wykład 4. SQL praca z tabelami 1 Wykład 4 SQL praca z tabelami 1 Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer

Bardziej szczegółowo

Podstawy Programowania C++

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

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

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

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

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

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Instrukcja CREATE TABLE

Instrukcja CREATE TABLE Podstawy języka SQL 2 Instrukcja CREATE TABLE CREATE TABLE tabela (pole_1 typ [(rozmiar)] [NOT NULL] [indeks_1] [, pole_2 typ [(rozmiar)] [NOT NULL] [indeks_2] [,...]] [, CONSTRAINT indeks_wielopolowy

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych

Bardziej szczegółowo

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

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

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

Oracle PL/SQL. Paweł Rajba.

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

Bardziej szczegółowo

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

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

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

Oracle PL/SQL. Paweł Rajba.

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

Bardziej szczegółowo

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

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

Bardziej szczegółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

Bardziej szczegółowo

Przeciążanie operatorów

Przeciążanie operatorów Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h> Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch

Bardziej szczegółowo

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

11 marca Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż. 1/41 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 11 marca 2017 2/41 Plan wykładu 1 2 3 4 3/41 PL/SQL PL/SQL (ang. Procedural Language/Structured Query Language) - język programowania

Bardziej szczegółowo

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

Powtórka algorytmów. Wprowadzenie do języka Java. Powtórka algorytmów. Wprowadzenie do języka Java. BEGIN Readln(a); Readln(b); Suma := 0; IF Suma < 10 THEN Writeln( Suma wynosi:, Suma); ELSE Writeln( Suma większa niż 10! ) END. 1. Narysować schemat blokowy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do wskaźników w języku ANSI C

Wstęp do wskaźników w języku ANSI C Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,

Bardziej szczegółowo

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2 Wprowadzania liczb Liczby wpisywane w komórce są wartościami stałymi. W Excel'u liczba może zawierać tylko następujące znaki: 0 1 2 3 4 5 6 7 8 9 + - ( ), / $ %. E e Excel ignoruje znaki plus (+) umieszczone

Bardziej szczegółowo

Autor: dr inż. Katarzyna Rudnik

Autor: dr inż. Katarzyna Rudnik Bazy danych Wykład 2 MS Access Obiekty programu, Reprezentacja danych w tabeli, Indeksy, Relacje i ich sprzężenia Autor: dr inż. Katarzyna Rudnik Obiekty programu MS ACCESS Obiekty typu Tabela są podstawowe

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone

Bardziej szczegółowo

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Typy danych, zmienne i tablice. Tomasz Borzyszkowski Typy danych, zmienne i tablice Tomasz Borzyszkowski Silne typy Javy Java jest językiem wyposażonym w silny system typów. Wywodzi się stąd siła i bezpieczeństwo tego języka. Co to znaczy silny system typów?

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Bardziej szczegółowo

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

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

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

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

Bardziej szczegółowo

LibreOffice Calc VBA

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

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

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

Wykład 2. Relacyjny model danych

Wykład 2. Relacyjny model danych Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających

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

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

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = Ala ma ; 1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

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

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

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Tabela wewnętrzna - definicja

Tabela wewnętrzna - definicja ABAP/4 Tabela wewnętrzna - definicja Temporalna tabela przechowywana w pamięci operacyjnej serwera aplikacji Tworzona, wypełniana i modyfikowana jest przez program podczas jego wykonywania i usuwana, gdy

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo