Oracle Typy danych PL/SQL: wartość logiczna, liczba, data [przykład]

⚡ Inteligentne podsumowanie

Typy danych PL/SQL definiują sposób Oracle Przechowuje, obsługuje i ogranicza każdą wartość w bloku. Grupują się one w rodziny znaków, liczb, wartości logicznych, dat i dużych obiektów (LOB), z których każda ma własny format przechowywania, limity rozmiaru i reguły przypisywania.

  • 🔤 Charakter: CHAR ma stałą długość, VARCHAR2 ma zmienną długość, a NCHAR i NVARCHAR2 używają krajowego zestawu znaków.
  • 🔢 Numer: NUMBER przechowuje wartości stałe lub zmiennoprzecinkowe o precyzji do 38 cyfr.
  • ✅ Boole'owskie: Ma wartość PRAWDA lub FAŁSZ i jest używany głównie w logice warunkowej.
  • 📅 Data: Przechowuje datę i godzinę, domyślnie północ, jeśli nie podano godziny.
  • 🗂️. LOB: BLOB, CLOB, NCLOB i BFILE umożliwiają przechowywanie dużych nieustrukturyzowanych danych o rozmiarze do 128 TB.
  • 💡 Najlepsze praktyki: Wybierz VARCHAR2 zamiast CHAR i LOB zamiast LONG, aby zaoszczędzić pamięć i zabezpieczyć się na przyszłość.
  • 🔗 Zakres: Typy SQL dotyczą kolumn tabel; typy PL/SQL są używane wewnątrz bloków PL/SQL.

Oracle Typy danych PL/SQL

Czym są typy danych PL/SQL?

Typy danych w PL/SQL zdefiniuj sposób przechowywania, obsługi i przetwarzania danych Oracle podczas przechowywania i przetwarzania. Typy danych są powiązane z określonym formatem przechowywania i ograniczeniami zakresu. W Oracle, każdej wartości lub stałej przypisany jest typ danych.

Główna różnica między PL/SQL i SQL Typy danych SQL są ograniczone do kolumn tabeli, podczas gdy typy danych PL/SQL są używane w Bloki PL/SQLWięcej na ten temat później w tym samouczku.

Poniżej znajduje się diagram różnych Oracle Typy danych PL/SQL:

Różne typy danych w PL/SQL
Różne typy danych w PL/SQL

Typ danych PL/SQL CHARACTER

Ten typ danych przechowuje znaki alfanumeryczne w formacie ciągu. Wartości literałowe powinny być zawsze ujęte w pojedyncze cudzysłowy podczas przypisywania ich do typu danych CHARACTER.

Ten znakowy typ danych jest dalej klasyfikowany w następujący sposób:

  • Typ danych CHAR (stały rozmiar ciągu)
  • Typ danych VARCHAR2 (zmienny rozmiar ciągu)
  • Typ danych VARCHAR
  • NCHAR (natywny stały rozmiar łańcucha)
  • NVARCHAR2 (natywny rozmiar łańcucha zmiennej)
  • DŁUGI i DŁUGI SUROWY
DataType OPIS Składnia
ZWĘGLAĆ Ten typ danych przechowuje wartość ciągu, a rozmiar ciągu jest ustalany w momencie deklaracji. zmienna.

  • Oracle wypełnia zmienną, jeśli nie zajmuje ona całego zadeklarowanego rozmiaru, więc Oracle przydziela pamięć o zadeklarowanym rozmiarze, nawet jeśli zmienna jej nie wypełnia.
  • Ograniczenie rozmiaru wynosi 1–2000 bajtów.
  • CHAR jest bardziej odpowiedni wszędzie tam, gdzie obsługiwany jest stały rozmiar danych.
grade CHAR;
manager CHAR (10):= 'guru99';

Wyjaśnienie składni:

  • Pierwsze polecenie deklaruje zmienną „grade” typu danych CHAR o maksymalnym rozmiarze 1 bajtu (wartość domyślna).
  • Drugie polecenie deklaruje zmienną „manager” typu danych CHAR o maksymalnym rozmiarze 10 i przypisuje jej wartość „guru99”, która wynosi 6 bajtów. Oracle w tym przypadku przydziela 10 bajtów zamiast 6.
VARCHAR2 Ten typ danych przechowuje ciąg znaków, ale jego długość nie jest ustalona.

  • Ograniczenie rozmiaru wynosi 1–4000 bajtów dla kolumny tabeli i 1–32767 bajtów dla zmiennej.
  • Rozmiar jest definiowany dla każdej zmiennej podczas jej deklaracji.
  • Oracle przydziela pamięć dopiero po zdefiniowaniu zmiennej, więc używa rzeczywistej długości przechowywanego ciągu, a nie zadeklarowanego rozmiaru.
  • Zawsze warto używać VARCHAR2 zamiast CHAR, aby zoptymalizować wykorzystanie pamięci.
manager VARCHAR2(10) := 'guru99';

Wyjaśnienie składni:

  • Polecenie deklaruje zmienną „manager” typu danych VARCHAR2 o maksymalnym rozmiarze 10 i przypisuje wartość „guru99”, która ma rozmiar 6 bajtów. Oracle przydziela tutaj pamięć o wielkości tylko 6 bajtów.
VARCHAR Jest to równoznaczne z typem danych VARCHAR2.

  • Dobrą praktyką jest zawsze stosowanie VARCHAR2 zamiast VARCHAR, aby uniknąć zmian w zachowaniu.
manager VARCHAR(10) := 'guru99';

Wyjaśnienie składni:

  • Polecenie deklaruje zmienną „manager” typu danych VARCHAR o maksymalnym rozmiarze 10 i przypisuje wartość „guru99”, 6 bajtów. Oracle przydziela tylko 6 bajtów, podobnie jak VARCHAR2.
NCHAR Ten typ danych jest taki sam jak CHAR, ale zestaw znaków jest zestawem znaków narodowych.

  • Ten zestaw znaków można zdefiniować dla sesji za pomocą parametru NLS_PARAMETERS.
  • Zestaw znaków może mieć format UTF16 lub UTF8.
  • Ograniczenie rozmiaru wynosi 1–2000 bajtów.
native NCHAR(10);

Wyjaśnienie składni:

  • Polecenie deklaruje zmienną „native” typu danych NCHAR o maksymalnym rozmiarze 10.
  • Długość zależy od liczby bajtów przypadających na znak zdefiniowany w zestawie znaków.
NVARCHAR2 Ten typ danych jest taki sam jak VARCHAR2, ale zestaw znaków jest zestawem znaków narodowych.

  • Ten zestaw znaków można zdefiniować dla sesji za pomocą parametru NLS_PARAMETERS.
  • Zestaw znaków może mieć format UTF16 lub UTF8.
  • Ograniczenie rozmiaru wynosi 1–4000 bajtów.
Native_var NVARCHAR2(10):= 'guru99';

Wyjaśnienie składni:

  • Polecenie deklaruje zmienną „Native_var” typu danych NVARCHAR2 o maksymalnym rozmiarze 10.
DŁUGI i DŁUGI SUROWY Ten typ danych przechowuje duże dane tekstowe lub surowe dane o maksymalnym rozmiarze 2 GB.

  • Są one używane głównie w słowniku danych.
  • LONG przechowuje dane zestawu znaków, natomiast LONG RAW przechowuje dane w formacie binarnym.
  • Format LONG RAW obsługuje obiekty multimedialne i obrazy, natomiast format LONG działa wyłącznie na danych, które można zapisać przy użyciu zestawu znaków.
Large_text LONG;
Large_raw LONG RAW;

Wyjaśnienie składni:

  • Polecenie deklaruje „Large_text” typu danych LONG i „Large_raw” typu danych LONG RAW.

Uwaga: Nie zaleca się używania typu danych LONG OracleZamiast tego należy preferować typ danych LOB.

Typ danych PL/SQL NUMBER

Ten typ danych przechowuje liczby stałoprzecinkowe lub zmiennoprzecinkowe o precyzji do 38 cyfr. Jest używany do pracy z polami zawierającymi wyłącznie dane liczbowe. Zmienną można zadeklarować z precyzją i liczbą miejsc po przecinku lub bez nich. Wartości nie muszą być ujęte w cudzysłów podczas przypisywania.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Wyjaśnienie składni:

  • Pierwsza deklaracja deklaruje zmienną „A” o typie danych liczbowych z całkowitą precyzją 8 i 2 miejscami po przecinku.
  • Drugi deklaruje typ danych liczbowych „B” z całkowitą precyzją 8 i bez cyfr dziesiętnych.
  • Trzecia jest najbardziej ogólna i deklaruje typ danych liczbowych „C” bez ograniczeń co do precyzji i miejsc po przecinku. Może zawierać do 38 cyfr.

Typ danych BOOLEAN PL/SQL

Ten typ danych przechowuje wartości logiczne. Oracle Typ danych boolowskich reprezentuje PRAWDA lub FAŁSZ i jest używany głównie w instrukcjach warunkowych. Wartości nie muszą być ujęte w cudzysłów podczas przypisywania.

Var1 BOOLEAN;

Wyjaśnienie składni:

  • Zmienna „Var1” jest zadeklarowana jako typ danych BOOLEAN. Wynik będzie wartością true lub false w zależności od ustawionego warunku.

Typ danych PL/SQL DATE

Ten typ danych przechowuje wartości w formacie daty, jako datę, miesiąc i rok. Za każdym razem, gdy zmienna jest zdefiniowana z typem danych DATE, może ona przechowywać informacje o czasie; domyślnie godzina jest ustawiana na 12:00:00, jeśli nie jest określona. Wartości należy ująć w cudzysłów podczas przypisywania.

Średnia Oracle Format czasu dla wejścia i wyjścia to „DD-MON-RR”, ustawiany w parametrze NLS_PARAMETERS (NLS_DATE_FORMAT) na poziomie sesji.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Wyjaśnienie składni:

  • Zmienna „newyear” jest zadeklarowana jako typ danych DATE i przypisana jest jej wartość 1 stycznia 2015 r.
  • Druga deklaracja deklaruje „current_date” jako typ danych DATE i przypisuje bieżącą datę systemową.
  • Obie zmienne zawierają informacje o czasie.

Typ danych PL/SQL LOB

Ten typ danych służy głównie do przechowywania i przetwarzania dużych bloków niestrukturyzowanych danych, takich jak obrazy i pliki multimedialne. Oracle Preferuje typ danych LOB nad LONG, ponieważ jest bardziej elastyczny. Główne zalety LOB nad LONG to:

  • Tabela jest ograniczona do jednej kolumny typu LONG, natomiast nie ma ograniczeń co do liczby kolumn typu LOB.
  • Narzędzia interfejsu danych akceptują kolumny LOB podczas replikacji, ale pomijają kolumny LONG, które muszą zostać zreplikowane ręcznie.
  • Kolumna LONG może pomieścić do 2 GB, natomiast kolumna LOB może pomieścić do 128 TB.
  • Oracle W każdej kolejnej wersji typ danych LOB jest udoskonalany, natomiast typ danych LONG pozostaje w dużej mierze niezmieniony.

Dlatego zawsze warto używać typu danych LOB zamiast LONG. Różne poniższe typy danych LOB pozwalają na przechowywanie do 128 terabajtów:

  1. KROPELKA
  2. CLOB i NCLOB
  3. BPLIK
DataType OPIS Składnia
KROPELKA Ten typ danych przechowuje dane LOB w formacie binarnym o maksymalnym rozmiarze 128 TB. Nie przechowuje danych w oparciu o szczegóły zestawu znaków, dlatego może przechowywać dane niestrukturalne, takie jak obiekty multimedialne i obrazy.
Binary_data BLOB;

Wyjaśnienie składni:

  • Zmienna „Binary_data” jest zadeklarowana jako BLOB.
CLOB i NCLOB Format CLOB przechowuje dane LOB w zestawie znaków, natomiast NCLOB w natywnym zestawie znaków. Ponieważ te formaty korzystają z pamięci masowej opartej na zestawie znaków, nie mogą przechowywać danych, takich jak multimedia czy obrazy. Maksymalny rozmiar to 128 TB.
Charac_data CLOB;

Wyjaśnienie składni:

  • Zmienna „Charac_data” jest zadeklarowana jako typ danych CLOB.
BPLIK
  • BFILE przechowuje niestrukturyzowane dane binarne poza bazą danych w postaci pliku systemu operacyjnego.
  • Rozmiar pliku BFILE jest ograniczony przez system operacyjny. Pliki są przeznaczone tylko do odczytu i nie można ich modyfikować.

FAQ

Typ CHAR ma stałą długość i uzupełnia zadeklarowany rozmiar, marnując miejsce na krótkie wartości. Typ VARCHAR2 ma zmienną długość i przechowuje tylko rzeczywiste znaki, dlatego jest preferowany w przypadku większości kolumn typu string.

LOB pozwala na wiele kolumn na tabelę, przechowuje do 128 TB danych i jest stale udoskonalany w każdej wersji. LONG jest ograniczony do jednej kolumny, ma limit 2 GB i jest zachowany głównie ze względu na kompatybilność wsteczną.

Nie w starszych wersjach. Typ BOOLEAN był dostępny wyłącznie w PL/SQL, więc kolumny tabeli korzystały z flagi NUMBER lub CHAR. Jest ona używana bezpośrednio wewnątrz bloków w logice warunkowej.

Tak. Profilując wartości próbki pod kątem długości, zakresu i formatu, AI może zasugerować kolumny VARCHAR2, NUMBER, DATE lub LOB oraz oznaczyć kolumny o zbyt dużym rozmiarze. Potwierdź wybór, porównując go z przyszłymi danymi.

Tak. Data przechowuje wiek, rok, miesiąc, dzień, godzinę, minutę i sekundę. Jeśli nie podano godziny, domyślnie jest to północ. W przypadku ułamków sekund lub stref czasowych należy użyć znacznika czasu (TIMESTAMP).

Podsumuj ten post następująco: