Oracle PL/SQL-i andmetüübid: tõeväärtus, arv, kuupäev [näide]

Mis on PL/SQL andmetüübid?

Andmetüübid PL/SQL-is kasutatakse määramaks, kuidas andmeid salvestatakse, käsitletakse ja töödeldakse Oracle andmete salvestamise ja töötlemise ajal. Andmetüübid on seotud konkreetse salvestusvormingu ja vahemiku piirangutega. sisse Oracle, on igale väärtusele või konstandile määratud andmetüüp.

Peamine erinevus PL/SQL ja SQL andmetüübid on, SQL-i andmetüüp on piiratud tabeli veeruga, samas kui PL/SQL-i andmetüüpe kasutatakse PL/SQL plokid. Lisateavet selle kohta hiljem õpetuses.

Järgnev on diagramm erinevatest Oracle PL/SQL andmetüübid:

PL/SQL andmetüübid
Erinevad andmetüübid PL/SQL-is

PL/SQL-MÄRK Andmetüüp

See andmetüüp salvestab põhiliselt tähtnumbrilisi märke stringivormingus.

Literaalväärtused tuleks alati lisada jutumärkidesse, määrates need andmetüübile CHARACTER.

Seda märgi andmetüüpi klassifitseeritakse veel järgmiselt:

  • CHAR Andmetüüp (fikseeritud stringi suurus)
  • VARCHAR2 Andmetüüp (muutuv stringi suurus)
  • VARCHAR Andmetüüp
  • NCHAR (natiivne fikseeritud stringi suurus)
  • NVARCHAR2 (omamuutuja stringi suurus)
  • LONG ja LONG TOOR
Andmetüüp Kirjeldus Süntaks
PAAK See andmetüüp salvestab stringi väärtuse ja stringi suurus on fikseeritud deklareerimise ajal muutuja.

  • Oracle muutuja jäetakse tühjaks, kui muutuja ei täidaks kogu selle jaoks deklareeritud suurust, seega Oracle eraldab mälu deklareeritud suuruse jaoks isegi siis, kui muutuja seda täielikult ei hõivanud.
  • Selle andmetüübi suurusepiirang on 1–2000 baiti.
  • CHAR-i andmetüüp on sobivam kasutada seal, kus töödeldakse fikseeritud andmete suurust.
grade CHAR;
manager CHAR (10):= 'guru99';

Süntaksi selgitus:

  • Esimene deklaratsioonilause deklareeris CHAR-andmetüübi muutuja 'grade' maksimaalse suurusega 1 bait (vaikeväärtus).
  • Teine deklaratsioonilause deklareeris CHAR-andmetüübi muutuja 'manager' maksimaalse suurusega 10 ja määras väärtuse 'guru99', mis on 6 baiti. Oracle eraldab sel juhul mälu 10 baiti, mitte 6 baiti.
VARCHAR2 See andmetüüp salvestab stringi, kuid stringi pikkus pole fikseeritud.

  • Selle andmetüübi suurusepiirang on tabeli veeru suuruse jaoks 1–4000 baiti ja muutujate jaoks 1–32767 baiti.
  • Suurus määratakse iga muutuja jaoks muutuja deklareerimise ajal.
  • Kuid Oracle eraldab mälu alles pärast muutuja defineerimist, st Oracle võtab arvesse ainult selle stringi tegelikku pikkust, mis on salvestatud muutujas mälu jaotamiseks, mitte aga suurust, mis on deklaratsiooniosas muutujale antud.
  • Mälukasutuse optimeerimiseks on alati hea kasutada CHAR-i andmetüübi asemel VARCHAR2.
manager VARCHAR2(10) := ‘guru99';

Süntaksi selgitus:

  • Ülaltoodud deklaratsioonilause deklareeris VARCHAR2 andmetüübi muutuja 'manager' maksimaalse suurusega 10 ja määras väärtuse 'guru99', mis on 6 baiti. Oracle eraldab sel juhul ainult 6 baiti mälu.
VARCHAR See on VARCHAR2 andmetüübi sünonüüm.

  • Käitumismuutuste vältimiseks on alati hea tava kasutada VARCHARi asemel VARCHAR2.
manager VARCHAR(10) := ‘guru99';

Süntaksi selgitus:

  • Ülaltoodud deklaratsioonilause deklareeris VARCHARi andmetüübi muutuja 'manager' maksimaalse suurusega 10 ja määras väärtuse 'guru99', mis on 6 baiti. Oracle eraldab sel juhul ainult 6 baiti mälu. (Sarnane VARCHAR2-ga)
NCHAR See andmetüüp on sama mis CHAR andmetüüp, kuid riikliku märgistiku märgistik.

  • Selle märgistiku saab seansi jaoks määratleda, kasutades NLS_PARAMETERS.
  • Märgistik võib olla kas UTF16 või UTF8.
  • Suuruse piirang on 1-2000 baiti.
native NCHAR(10);

Süntaksi selgitus:

  • Ülaltoodud deklaratsioonilause deklareerib NCHAR-i andmetüübi muutuja 'native' maksimaalse suurusega 10.
  • Selle muutuja pikkus sõltub (pikkuste arvust) baidi kohta, nagu on määratletud märgistikus.
NVARCHAR2 See andmetüüp on sama mis VARCHAR2 andmetüüp, kuid märgistik on riiklikust märgistikust.

  • Selle märgistiku saab seansi jaoks määratleda, kasutades NLS_PARAMETERS.
  • Märgistik võib olla kas UTF16 või UTF8.
  • Suuruse piirang on 1-4000 baiti.
Native var NVARCHAR2(10):='guru99';

Süntaksi selgitus:

  • Ülaltoodud deklaratsioonilause deklareerib NVARCHAR2 andmetüübi muutuja 'Native_var' maksimaalse suurusega 10.
LONG ja LONGRAW Seda andmetüüpi kasutatakse suure teksti või töötlemata andmete salvestamiseks maksimaalselt 2 GB.

  • Neid kasutatakse peamiselt andmesõnastikus.
  • LONG andmetüüpi kasutatakse märgistiku andmete salvestamiseks, samas kui LONG RAW kasutatakse andmete salvestamiseks binaarvormingus.
  • LONG RAW andmetüüp aktsepteerib meediumiobjekte, pilte jne, samas kui LONG töötab ainult andmete puhul, mida saab märgistiku abil salvestada.
Large_text LONG;
Large_raw LONG RAW;

Süntaksi selgitus:

  • Ülaltoodud deklaratsioonilause deklareerib andmetüübi LONG muutuja 'Large_text' ja LONG RAW andmetüübi 'Large_raw'.

Märge: LONG andmetüüpi ei soovita kasutada Oracle. Selle asemel tuleks eelistada LOB-i andmetüüpi.

PL/SQL NUMBER Andmetüüp

See andmetüüp salvestab fikseeritud või ujukomaga numbreid kuni 38-kohalise täpsusega. Seda andmetüüpi kasutatakse väljadega, mis sisaldavad ainult numbriandmeid, töötamiseks. Muutuja saab deklareerida kas täppis- ja kümnendkohaandmetega või ilma selle teabeta. Selle andmetüübi määramisel ei pea väärtused olema jutumärkides.

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

Süntaksi selgitus:

  • Ülaltoodu puhul deklareerib esimene deklaratsioon, et muutuja A on arvandmetüüpi, mille täielik täpsus on 8 ja kümnendkohad 2.
  • Teine deklaratsioon deklareerib, et muutuja B on numbriandmete tüüpi, mille täielik täpsus on 8 ja ilma kümnendkohata.
  • Kolmas deklaratsioon on kõige üldisem, deklareerib, et muutuja C on numbriandmete tüüpi, ilma täpsuse või kümnendkohtade piiranguteta. See võib kesta kuni 38 numbrit.

PL/SQL BOOLEAN andmetüüp

See andmetüüp salvestab loogilised väärtused. Oracle Boole'i ​​andmetüüp tähistab kas TRUE või FALSE ja seda kasutatakse peamiselt tingimuslausetes. Selle andmetüübi määramisel ei pea väärtused olema jutumärkides.

Var1 BOOLEAN;

Süntaksi selgitus:

  • Ülaltoodu puhul on muutuja 'Var1' deklareeritud BOOLEAN-i andmetüübina. Tingimuste komplekti alusel on koodi väljund kas tõene või väär.

PL/SQL DATE andmetüüp

See andmetüüp salvestab väärtused kuupäevavormingus kuupäeva, kuu ja aasta kujul. Kui muutuja on määratletud andmetüübiga DATE koos kuupäevaga, võib see sisaldada ajateavet ja vaikimisi määratakse ajateabe väärtuseks 12:00:00, kui seda pole määratud. Selle andmetüübi määramisel peavad väärtused olema jutumärkides.

Standard Oracle sisendi ja väljundi ajavorming on 'DD-MON-YY' ja see on taas määratud seansi tasemel NLS_PARAMETERS (NLS_DATE_FORMAT).

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

Süntaksi selgitus:

  • Eespool on muutuja 'newyear' deklareeritud andmetüübina DATE ja sellele omistatakse 1. jaanuar.st, kuupäev 2015.
  • Teine deklaratsioon deklareerib muutuja current_date andmetüübina DATE ja omistab väärtusele praeguse süsteemi kuupäeva.
  • Mõlemad muutujad sisaldavad ajateavet.

PL/SQL LOB-i andmetüüp

Seda andmetüüpi kasutatakse peamiselt suurte struktureerimata andmeplokkide, näiteks piltide, multimeediumifailide jne salvestamiseks ja töötlemiseks. Oracle eelistab LOB-i andmetüübi LONG asemel, kuna see on paindlikum kui andmetüüp LONG. Allpool on mõned LOB-i peamised eelised LONG-i andmetüübi ees.

  • LONG andmetüübiga tabeli veergude arv on piiratud 1-ga, samas kui LOB-andmetüübiga tabelis pole piiranguid.
  • Andmeliidese tööriist aktsepteerib andmete replikatsiooni ajal tabeli LOB-andmetüüpi, kuid jätab tabeli veeru LONG välja. Neid PIKKID veerge tuleb käsitsi kopeerida.
  • LONG veeru suurus on 2 GB, samas kui LOB mahutab kuni 128 TB.
  • Oracle täiustab pidevalt LOB-i andmetüüpi kõigis oma väljaannetes vastavalt kaasaegsetele nõuetele, samas kui LONG-andmetüüp on konstantne ega saa palju värskendusi.

Seega on alati hea andmetüübi LONG asemel kasutada andmetüüpi LOB. Järgnevalt on toodud erinevad LOB-i andmetüübid. Need võivad salvestada kuni 128 terabaiti.

  1. MÄNG
  2. CLOB ja NCLOB
  3. BFILE
Andmetüüp Kirjeldus Süntaks
MÄNG See andmetüüp salvestab LOB-andmed binaarfailivormingus kuni 128 TB. See ei salvesta andmeid märgistiku üksikasjade põhjal, et saaks salvestada struktureerimata andmeid, nagu multimeediumobjektid, pildid jne.
Binary_data BLOB;

Süntaksi selgitus:

  • Eespool on muutuja 'Binary_data' deklareeritud kui BLOB.
CLOB ja NCLOB Andmetüüp CLOB salvestab LOB-andmed märgikomplekti, samas kui NCLOB salvestab andmed algsesse märgikomplekti. Kuna need andmetüübid kasutavad märgistikupõhist salvestusruumi, ei saa need salvestada andmeid, nagu multimeedium, pildid jne, mida ei saa märgistringi panna. Nende andmetüüpide maksimaalne suurus on 128 TB.
Charac_data CLOB;

Süntaksi selgitus:

  • Eespool on muutuja 'Charac_data' deklareeritud CLOB-i andmetüübina.
BFILE
  • BFILE on andmetüübid, mis salvestasid struktureerimata binaarvormingus andmeid väljaspool andmebaasi operatsioonisüsteemi failina.
  • BFILE-i suurus on piiratud operatsioonisüsteemiga ja need on kirjutuskaitstud failid ja neid ei saa muuta.

kokkuvõte

Oleme käsitlenud erinevaid lihtsaid andmetüüpe, mis on saadaval PL / SQL koos nende süntaksiga. Keeruliste andmetüüpide kohta õpime edasistes teemades.