Oracle PL/SQL adattípusok: logikai érték, szám, dátum [példa]

⚡ Okos összefoglaló

A PL/SQL adattípusok határozzák meg, hogyan Oracle tárolja, kezeli és korlátozza az egyes értékeket egy blokkban. Karakter-, szám-, logikai-, dátum- és nagy objektum (LOB) családokba csoportosulnak, mindegyiknek saját tárolási formátuma, méretkorlátai és hozzárendelési szabályai vannak.

  • 🔤 Karakter: A CHAR fix hosszúságú, a VARCHAR2 változó hosszúságú, az NCHAR és az NVARCHAR2 pedig a nemzeti karakterkészletet használja.
  • 🔢 Szám: A NUMBER függvény fix vagy lebegőpontos értékeket tárol legfeljebb 38 számjegy pontossággal.
  • ✅ Logikai érték: IGAZ vagy HAMIS értéket tart fenn, és főként feltételes logikában használják.
  • 📅 Találka: Tárolja a dátumot és az időt, alapértelmezés szerint éjfélre állítja be az időt, ha nincs megadva idő.
  • 🗂️ FAJANKÓ: A BLOB, CLOB, NCLOB és BFILE nagy, strukturálatlan adatok tárolására alkalmas, akár 128 TB-ig.
  • ???? Legjobb gyakorlat: A memória megtakarítása és a jövőbiztos működés érdekében részesítsd előnyben a VARCHAR2-t a CHAR-ral, és a LOB-ot a LONG-gal szemben.
  • 🔗 Hatály: Az SQL típusok a tábla oszlopaira vonatkoznak; a PL/SQL típusokat PL/SQL blokkokon belül használják.

Oracle PL/SQL adattípusok

Mik azok a PL/SQL adattípusok?

Adattípusok PL/SQL-ben definiálja, hogyan tárolja, kezeli és kezeli az adatokat Oracle tárolás és feldolgozás során. Az adattípusok egy adott tárolási formátumhoz és tartománykorlátozásokhoz vannak társítva. Oracle, minden értékhez vagy konstanshoz hozzárendelünk egy adattípust.

A fő különbség a PL/SQL és SQL Az adattípusok lényege, hogy az SQL adattípusok a táblázat oszlopaira korlátozódnak, míg a PL/SQL adattípusokat a PL/SQL blokkok. Erről bővebben később az oktatóanyagban.

A következő ábra a különböző Oracle PL/SQL adattípusok:

Különböző adattípusok a PL/SQL-ben
Különböző adattípusok a PL/SQL-ben

PL/SQL KARAKTER Adattípus

Ez az adattípus alfanumerikus karaktereket tárol karakterlánc formátumban. A literálértékeket mindig aposztrófok közé kell tenni, ha CHARACTER adattípushoz rendeljük őket.

Ez a karakter adattípus a következőképpen osztályozható:

  • CHAR adattípus (fix karakterláncméret)
  • VARCHAR2 adattípus (változó karakterláncméret)
  • VARCHAR adattípus
  • NCHAR (natív rögzített karakterláncméret)
  • NVARCHAR2 (natív változó karakterláncméret)
  • HOSSZÚ és HOSSZÚ RAW
Adattípus Leírás Szintaxis
CHAR Ez az adattípus egy karakterlánc értéket tárol, és a karakterlánc mérete a deklaráláskor rögzített. változó.

  • Oracle üresen tölti ki a változót, ha az nem foglalja el a teljes deklarált méretet, tehát Oracle A deklarált méretnek megfelelő memóriát foglal le, még akkor is, ha a változó nem tölti fel azt.
  • A méretkorlátozás 1-2000 bájt.
  • A CHAR akkor a legmegfelelőbb, ha fix méretű adatot kezelünk.
grade CHAR;
manager CHAR (10):= 'guru99';

Szintaxis magyarázata:

  • Az első utasítás deklarálja a CHAR adattípusú 'grade' változót, amelynek maximális mérete 1 bájt (alapértelmezett érték).
  • A második utasítás deklarálja a CHAR adattípusú „manager” változót, amelynek maximális mérete 10, és a „guru99” értéket rendeli hozzá, ami 6 bájt. Oracle ebben az esetben 10 bájtot foglal le 6 helyett.
VARCHAR2 Ez az adattípus egy karakterláncot tárol, de a hossza nem rögzített.

  • A méretkorlátozás táblaoszlopok esetén 1-4000 bájt, változók esetén pedig 1-32767 bájt.
  • A méretet minden változóra a deklaráció során definiáljuk.
  • Oracle csak a változó definiálása után foglal le memóriát, így a tárolt karakterlánc tényleges hosszát használja a deklarált méret helyett.
  • A memóriahasználat optimalizálása érdekében mindig érdemes VARCHAR2-t használni a CHAR helyett.
manager VARCHAR2(10) := 'guru99';

Szintaxis magyarázata:

  • Az utasítás deklarálja a VARCHAR2 adattípusú „manager” változót, amelynek maximális mérete 10, és hozzárendeli a „guru99” értéket, ami 6 bájt. Oracle csak 6 bájt memóriát foglal le itt.
VARCHAR Ez a VARCHAR2 adattípus szinonimája.

  • A viselkedésbeli változások elkerülése érdekében mindig ajánlott a VARCHAR2 használata a VARCHAR helyett.
manager VARCHAR(10) := 'guru99';

Szintaxis magyarázata:

  • Az utasítás deklarálja a VARCHAR adattípusú „manager” változót, amelynek maximális mérete 10, és a „guru99” értéket 6 bájt méretben rendeli hozzá. Oracle csak 6 bájtot foglal le, hasonlóan a VARCHAR2-höz.
NCHAR Ez az adattípus megegyezik a CHAR adattípussal, de a karakterkészlet a nemzeti karakterkészlet.

  • Ez a karakterkészlet a munkamenethez az NLS_PARAMETERS használatával definiálható.
  • A karakterkészlet UTF16 vagy UTF8 lehet.
  • A méretkorlátozás 1-2000 bájt.
native NCHAR(10);

Szintaxis magyarázata:

  • Az utasítás deklarálja az NCHAR adattípusú „native” változót, amelynek maximális mérete 10 lehet.
  • A hossz a karakterkészletben definiált karakterenkénti bájtok számától függ.
NVARCHAR2 Ez az adattípus megegyezik a VARCHAR2 adattípussal, de a karakterkészlet a nemzeti karakterkészlet.

  • Ez a karakterkészlet a munkamenethez az NLS_PARAMETERS használatával definiálható.
  • A karakterkészlet UTF16 vagy UTF8 lehet.
  • A méretkorlátozás 1-4000 bájt.
Native_var NVARCHAR2(10):= 'guru99';

Szintaxis magyarázata:

  • Az utasítás deklarálja az NVARCHAR2 adattípusú 'Native_var' változót, amelynek maximális mérete 10 lehet.
HOSSZÚ és HOSSZÚ RAW Ez az adattípus nagyméretű szöveget vagy nyers adatokat tárol, legfeljebb 2 GB méretben.

  • Ezeket főleg az adatszótárban használják.
  • A LONG karakterkészlet-adatokat tárol, míg a LONG RAW bináris formátumban tárolja az adatokat.
  • A LONG RAW formátum médiaobjektumokat és képeket fogad el, míg a LONG csak olyan adatokon működik, amelyek karakterkészlettel tárolhatók.
Large_text LONG;
Large_raw LONG RAW;

Szintaxis magyarázata:

  • Az utasítás LONG adattípusú „Large_text” és LONG RAW adattípusú „Large_raw” szöveget deklarál.

Jegyzet: A LONG adattípus használata nem ajánlott. OracleEhelyett a LOB adattípust kell előnyben részesíteni.

PL/SQL SZÁM Adattípus

Ez az adattípus fix vagy lebegőpontos számokat tárol legfeljebb 38 jegy pontossággal. Olyan mezők kezelésére szolgál, amelyek csak számadatokat tartalmaznak. A változó deklarálható pontossággal és decimális jegyadatokkal, vagy azok nélkül. Az értékeket hozzárendeléskor nem kell idézőjelek közé tenni.

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

Szintaxis magyarázata:

  • Az első deklaráció az 'A' változót numerikus adattípussal deklarálja, teljes pontossággal 8 és 2 tizedesjegy pontossággal.
  • A második a 'B' szám adattípust deklarálja, teljes pontossággal 8 és tizedesjegyek nélkül.
  • A harmadik a legáltalánosabb, 'C' szám adattípust deklarál, pontossági vagy tizedesjegyekre vonatkozó korlátozás nélkül. Legfeljebb 38 számjegyet vehet fel.

PL/SQL BOOLEAN adattípus

Ez az adattípus logikai értékeket tárol. Oracle A logikai adattípus IGAZ vagy HAMIS értéket jelöl, és főként feltételes utasításokban használják. Az értékeket hozzárendeléskor nem kell idézőjelek közé tenni.

Var1 BOOLEAN;

Szintaxis magyarázata:

  • A „Var1” változó BOOLEAN adattípusként van deklarálva. A kimenet igaz vagy hamis lesz a beállított feltételtől függően.

PL/SQL DÁTUM Adattípus

Ez az adattípus dátumformátumban tárolja az értékeket, például dátum, hónap és év formájában. Amikor egy változó DATE adattípussal van definiálva, időinformációkat is tárolhat; alapértelmezés szerint az idő 12:00:00-ra van állítva, ha nincs megadva. Az értékeket idézőjelek közé kell tenni hozzárendeléskor.

A szabvány Oracle A bemenet és a kimenet időformátuma 'NN-HÓ-ÉÉ', amely az NLS_PARAMETERS (NLS_DATE_FORMAT) paraméterben van beállítva munkamenet-szinten.

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

Szintaxis magyarázata:

  • A „newyear” változó DATE adattípusként van deklarálva, és a 2015. január 1-jei értéket kapja.
  • A második deklaráció a „current_date” értéket DATE adattípusként deklarálja, és hozzárendeli az aktuális rendszerdátumot.
  • Mindkét változó tartalmazza az időbeli információkat.

PL/SQL LOB adattípus

Ezt az adattípust főként nagyméretű, strukturálatlan adatblokkok, például képek és multimédiás fájlok tárolására és kezelésére használják. Oracle A LOB adattípust részesíti előnyben a LONG adattípussal szemben, mivel rugalmasabb. A LOB fő előnyei a LONG-gal szemben a következők:

  • Egy tábla egyetlen LONG oszlopra korlátozódik, míg a LOB oszlopok számára nincs korlátozás.
  • Az adatinterfész eszközök elfogadják a LOB oszlopokat a replikáció során, de kihagyják a LONG oszlopokat, amelyeket manuálisan kell replikálni.
  • Egy LONG oszlop akár 2 GB-ot is tárolhat, míg egy LOB akár 128 TB-ot is.
  • Oracle A LOB adattípus minden kiadással folyamatosan fejlődik, míg a LONG nagyrészt változatlan.

Tehát mindig érdemes a LOB adattípust használni a LONG helyett. Az alábbi különböző LOB adattípusok akár 128 terabájtot is tárolhatnak:

  1. FOLT
  2. CLOB és NCLOB
  3. BFILE
Adattípus Leírás Szintaxis
FOLT Ez az adattípus LOB-adatokat tárol bináris fájlformátumban, maximum 128 TB méretben. Nem tárol karakterkészlet-részletek alapján adatokat, így strukturálatlan adatokat, például multimédiás objektumokat és képeket is képes tárolni.
Binary_data BLOB;

Szintaxis magyarázata:

  • A „Binary_data” változó BLOB-ként van deklarálva.
CLOB és NCLOB A CLOB a LOB adatokat a karakterkészletben tárolja, míg az NCLOB a natív karakterkészletben. Mivel ezek karakterkészlet alapú tárolást használnak, nem tudnak olyan adatokat tárolni, mint a multimédia vagy a képek. A maximális méret 128 TB.
Charac_data CLOB;

Szintaxis magyarázata:

  • A „Charac_data” változó CLOB adattípusként van deklarálva.
BFILE
  • A BFILE a strukturálatlan bináris adatokat az adatbázison kívül, operációsrendszer-fájlként tárolja.
  • A BFILE méretét az operációs rendszer korlátozza, a fájlok csak olvashatók és nem módosíthatók.

GYIK

A CHAR fix hosszúságú, és a deklarált méretnek megfelelő üres helyeket tartalmaz, így a rövid értékek helyet pazarolnak. A VARCHAR2 változó hosszúságú, és csak a tényleges karaktereket tárolja, ezért a legtöbb karakterlánc oszlophoz ajánlott.

A LOB táblázatonként sok oszlopot engedélyez, akár 128 TB-ot is tárolhat, és minden kiadásban folyamatosan fejlődik. A LONG egy oszlopra korlátozódik, mérete 2 GB-ban van, és főként a visszafelé kompatibilitás érdekében maradt meg.

Régebbi kiadásokban nem. A BOOLEAN egy csak PL/SQL-ben használható típus volt, így a táblázat oszlopai NUMBER vagy CHAR jelzőt használtak. Közvetlenül a blokkokon belül használják feltételes logikához.

Igen. A mintaértékek hossz, tartomány és formátum szerinti profilalkotásával a mesterséges intelligencia javasolhat VARCHAR2, NUMBER, DATE vagy LOB értékeket, és megjelölheti a túlméretezett oszlopokat. Erősítse meg a választást a jövőbeli adatokkal szemben.

Igen. A DATE (DATE) a következő adatokat tárolja: évszázad, év, hónap, nap, óra, perc és másodperc. Ha nincs megadva idő, akkor az alapértelmezés szerint éjfél. Tört másodpercek vagy időzónák esetén használja a TIMESTAMP (IDŐBÉLYEG) kifejezést.

Foglald össze ezt a bejegyzést a következőképpen: