
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_INTEGER
Przechowuje 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).
LONG
Typ 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 RAW
Typ podobny do typu LONG, ale służy do przechowywania ciągów binarnych a nie tekstu.
DATE
Typ ten przechowuje informacje o wieku, roku, miesiącu, dniu, godzinie, minucie i sekundzie. Jest zakodowany na siedmiu bajach, po jednym na każdy komponent.
BOOLEAN
Typ, który może przyjmować tylko trzy wartości: TRUE, FALSE, NULL.
ROWID
Typ 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
...