Strona o szybkim czytaniu.
NUMBER(P,S)Typ ten może przechowywać wartości całkowite i rzeczywiste. P (precyzja) oznacza ilość wszystkich cyfr w liczbie, natomiast S (skala) oznacza ilość cyfr po przecinku. P <= 38, -84 <= S <= 127.
BINARY_INTEGERPrzechowuje tylko liczby całkowite z zakresu –2147483647 do 2147483647.
CHAR(L)Przechowuje stałą zadeklarowaną (L) ilość znaków. Jeżeli ilość przypisanych znaków jest mniejsza niż L, wtedy zmienna jest uzupełniana do odpowiedniej długości spacjami. L musi być mniejsze od 32768 i domyślnie jest przyjmowane jako 1.
VARCHAR2(L)Przechowuje znaki. Zajmuje tylko tyle miejsca, ile znaków zostanie przypisanych do zmiennej. L służy do wyznaczenia maksymalnego, dopuszczalnego rozmiaru łańcucha danych, jaki można przypisać do zmiennej tego typu. L musi być mniejsze od 32768 i nie jest przyjmowane domyślnie (musi zostać wyspecyfikowane).
LONGTyp bardzo podobny do VARCHAR2, jego maksymalna długość wynosi tylko 32760 bajtów (w przeciwieństwie do kolumn bazodanowych typu LONG).
RAW(L)Typ podobny do CHAR(L), z tym, że służy do przechowywania ciągów binarnych a nie tekstu.
LONG RAWTyp podobny do typu LONG, ale służy do przechowywania ciągów binarnych a nie tekstu.
DATETyp ten przechowuje informacje o wieku, roku, miesiącu, dniu, godzinie, minucie i sekundzie. Jest zakodowany na siedmiu bajach, po jednym na każdy komponent.
BOOLEANTyp, który może przyjmować tylko trzy wartości: TRUE, FALSE, NULL.
ROWIDTyp ten służy wyłącznie do przechowywania bazodanowej pseudokolumny ROWID.
| Deklaracja | Przypisywana wartość | Przechowywana wartość |
|---|---|---|
| NUMBER | 1234.5678 | 1234.5678 |
| NUMBER(3) | 123 | 123 |
| NUMBER(3) | 1234 | --Błąd podczas operacji-- |
| NUMBER(7,4) | 123.4567 | 123.4567 |
| NUMBER(7,4) | 123.45678 | 123.4568 |
| NUMBER(3,-2) | 123 | 100 |
| NUMBER(3,-1) | 123 | 120 |
| CHAR(10) | 'Ala' | 'Ala ' |
| VARCHAR2(10) | 'Ala' | 'Ala' |
| VARCHAR2(10) | 'Ala ma kota' | --Błąd podczas operacji-- |
Oba te typy służą do przechowywania wartości całkowitych, nie jest jednak obojętne dla wydajności, który z tych typów wybierzemy, ponieważ zmienne obu typów są przechowywane przez Oracle w innym formacie. Zmienne typu number są przechowywane w takim formacie, w jakim Oracle zapisuje liczby w bazie danych, dlatego należy używać tego typu w przypadku, gdy w deklarowanej zmiennej będziemy przechowywać wartości wybierane bądź wkładane do bazy danych.
Zmienne typu binary_integer są przechowywane w pamięci za pomocą kodu uzupełnieniowego do dwu, a zatem w formie optymalnej do wykonywania operacji arytmetycznych.
Możliwe jest wykonywanie operacji arytmetycznych na zmiennych typu number i używanie zmiennych typu binary_integer do operacji na wartościach z tabel bez jawnej konwersji, jednak wiąże się to z dodatkowym nakładem pracy wykonywanej przez serwer Oracle.
Zmienne typu char zajmują zawsze tyle samo miejsca, niezależnie od tego, jakie wartości zostały tym zmiennym przypisane. Zmienne typu varchar2 zajmują miejsca w zależności od wielkości przypisanej wartości.
Oracle stosuje dwa różne algorytmy porównywania wartości znakowych, tzw. „blank padded” i „non blank padded”. Różnice pomiędzy tymi algorytmami objawiają się w przypadku, gdy porównywane są ze sobą dwa ciągi znaków o różnej długości, a porównanie początków ciągów nie przyniosło rezultatów. W przypadku algorytmu „non blank padded” ciąg krótszy uznawany jest za mniejszy, natomiast w przypadku algorytmu „blank padded” ciąg krótszy jest uzupełniany o spacje i porównywanie jest kontynuowane.
| Wartość zmiennej v_1 | Wartość zmiennej v_2 | Blank padded | Non blank padded |
|---|---|---|---|
| 'ABCD' | 'ABCD' | v_1 = v_2 | v_1 = v_2 |
| 'ABC' | 'ABCD' | v_1 < v_2 | v_1 < v_2 |
| 'ABC' | 'ABC ' | v_1 = v_2 | v_1 < v_2 |
Jeżeli przynajmniej jeden argument porównania jest zmienną typu o zmiennej długości (varchar2), to Oracle stosuje algorytm „non blank padded”. Algorytm „blank padded” jest stosowany tylko, jeżeli oba argumenty porównania są zmiennymi typu o stałej długości lub literałami.
Użytkownik może zdefiniować w sekcji deklaracyjnej własne podtypy na podstawie istniejących typów skalarnych.
SUBTYPE nowy_typ IS istniejący_typ;
istniejący_typ może zawierać skalę i precyzji dla typów numerycznych oraz długości dla typów znakowych. Podczas deklaracji zmiennych nowego podtypu dane te mogą zostać nadpisane.
ddl_log informacje o wszystkich tworzonych obiektach na schemacie, na którym będzie stworzony wyzwalacz.
DECLARE
SUBTYPE t_nazwisko IS varchar2(30);
v_nazw1 t_nazwisko; -- zmienna typu varchar2(30)
v_nazw2 t_nazwisko; -- zmienna typu varchar2(30)
v_dl_nazw t_nazwisko(70); -- zmienna typu varchar2(70)
BEGIN
...