Oracle PL/SQL-tietotyypit: Boolen arvo, numero, päivämäärä [esimerkki]

⚡ Älykäs yhteenveto

PL/SQL-tietotyypit määrittelevät, miten Oracle tallentaa, käsittelee ja rajoittaa lohkon jokaisen arvon. Ne ryhmittyvät merkki-, numero-, totuusarvo-, päivämäärä- ja suurten objektien (LOB) perheisiin, joilla jokaisella on oma tallennusmuotonsa, kokorajoituksensa ja määrityssääntönsä.

  • 🔤 Luonne: CHAR on kiinteän pituinen, VARCHAR2 on vaihtelevan pituinen ja NCHAR ja NVARCHAR2 käyttävät kansallista merkistöä.
  • 🔢 Määrä: NUMBER tallentaa kiinteitä tai liukulukuja enintään 38 numeron tarkkuudella.
  • ✅ Boolen arvo: Pitää arvon TOSI tai EPÄTOSI ja sitä käytetään pääasiassa ehdollisessa logiikassa.
  • 📅 Treffi: Tallentaa päivämäärän ja kellonajan, oletusarvoisesti keskiyö, jos aikaa ei ole annettu.
  • 🗂️ LOB: BLOB, CLOB, NCLOB ja BFILE tallentavat suuria, strukturoimattomia tietoja jopa 128 Tt:iin asti.
  • 💡 Paras harjoitus: Suosi VARCHAR2-muuttujaa CHAR-muuttujan sijaan ja LOB-muuttujaa LONG-muuttujan sijaan muistin säästämiseksi ja tulevaisuuden vaatimusten täyttämiseksi.
  • 🔗 Soveltamisala: SQL-tyypit koskevat taulukon sarakkeita; PL/SQL-tyyppejä käytetään PL/SQL-lohkojen sisällä.

Oracle PL/SQL-tietotyypit

Mitä ovat PL/SQL-tietotyypit?

Tietotyypit PL/SQL:ssä määritellään, miten data tallennetaan, käsitellään ja prosessoidaan Oracle tallennuksen ja käsittelyn aikana. Tietotyypit liittyvät tiettyyn tallennusmuotoon ja aluerajoituksiin. Oracle, jokaiselle arvolle tai vakiolle on määritetty tietotyyppi.

Suurin ero PL/SQL:n ja SQL tietotyypit on, että SQL-tietotyypit rajoittuvat taulukon sarakkeisiin, kun taas PL/SQL-tietotyyppejä käytetään PL/SQL-lohkot. Tästä lisää myöhemmin opetusohjelmassa.

Seuraavassa on kaavio eri Oracle PL/SQL-tietotyypit:

Eri tietotyypit PL/SQL:ssä
Eri tietotyypit PL/SQL:ssä

PL/SQL CHARACTER Tietotyyppi

Tämä tietotyyppi tallentaa aakkosnumeerisia merkkejä merkkijonomuodossa. Kirjaimelliset arvot tulee aina laittaa lainausmerkkeihin, kun ne liitetään CHARACTER-tietotyyppiin.

Tämä merkkitietotyyppi luokitellaan edelleen seuraavasti:

  • CHAR-tietotyyppi (kiinteä merkkijonon koko)
  • VARCHAR2-tietotyyppi (muuttuva merkkijonon koko)
  • VARCHAR-tietotyyppi
  • NCHAR (natiivi kiinteä merkkijonokoko)
  • NVARCHAR2 (natiivimuuttujan merkkijonokoko)
  • PITKÄ ja PITKÄ RAW
Tietotyyppi Tuotetiedot Syntaksi
HIILTYÄ Tämä tietotyyppi tallentaa merkkijonon arvon, ja merkkijonon koko on kiinteä arvon määrittelyn yhteydessä. muuttuja.

  • Oracle täyttää muuttujan tyhjäksi, jos se ei täytä koko ilmoitettua kokoa, joten Oracle varaa muistia ilmoitetun koon mukaisesti, vaikka muuttuja ei täyttäisi sitä.
  • Kokorajoitus on 1-2000 tavua.
  • CHAR sopii paremmin silloin, kun käsitellään kiinteän kokoista dataa.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaksiselitys:

  • Ensimmäinen lauseke määrittää CHAR-tietotyypin 'grade'-muuttujan, jonka enimmäiskoko on yksi tavu (oletusarvo).
  • Toinen lauseke määrittää CHAR-tietotyypin 'manager'-muuttujan, jonka enimmäiskoko on 10, ja antaa sille arvon 'guru99', joka on 6 tavua. Oracle varaa tässä tapauksessa 10 tavua 6 tavun sijaan.
VARCHAR2 Tämä tietotyyppi tallentaa merkkijonon, mutta sen pituus ei ole kiinteä.

  • Kokorajoitus on 1–4000 tavua taulukon sarakkeelle ja 1–32767 tavua muuttujalle.
  • Koko määritellään kullekin muuttujalle deklaroinnin yhteydessä.
  • Oracle varaa muistia vasta muuttujan määrittelyn jälkeen, joten se käyttää tallennetun merkkijonon todellista pituutta ilmoitetun koon sijaan.
  • Muistin käytön optimoimiseksi on aina hyvä käyttää VARCHAR2:ta CHAR:n sijaan.
manager VARCHAR2(10) := 'guru99';

Syntaksiselitys:

  • Lause määrittää VARCHAR2-tietotyypin 'manager'-muuttujan, jonka enimmäiskoko on 10, ja määrittää sille arvon 'guru99', joka on 6 tavua. Oracle varaa tässä vain 6 tavun muistia.
VARCHAR Tämä on synonyymi VARCHAR2-tietotyypille.

  • On aina hyvä käytäntö käyttää VARCHAR2:ta VARCHAR:n sijaan käyttäytymisen muutosten välttämiseksi.
manager VARCHAR(10) := 'guru99';

Syntaksiselitys:

  • Lause määrittää VARCHAR-tietotyypin 'manager'-muuttujan, jonka enimmäiskoko on 10, ja määrittää sille 'guru99':n, jonka koko on 6 tavua. Oracle varaa vain 6 tavua, samalla tavalla kuin VARCHAR2.
NCHAR Tämä tietotyyppi on sama kuin CHAR, mutta merkistö on kansallinen merkistö.

  • Tämä merkistö voidaan määrittää istunnolle käyttämällä NLS_PARAMETERS.
  • Merkistö voi olla joko UTF16 tai UTF8.
  • Kokorajoitus on 1-2000 tavua.
native NCHAR(10);

Syntaksiselitys:

  • Lauseke määrittää NCHAR-tietotyypin 'native'-muuttujan, jonka enimmäiskoko on 10.
  • Pituus riippuu merkistössä määritellyistä tavujen määrästä merkkiä kohden.
NVARCHAR2 Tämä tietotyyppi on sama kuin VARCHAR2, mutta merkistö on kansallinen merkistö.

  • Tämä merkistö voidaan määrittää istunnolle käyttämällä NLS_PARAMETERS.
  • Merkistö voi olla joko UTF16 tai UTF8.
  • Kokorajoitus on 1-4000 tavua.
Native_var NVARCHAR2(10):= 'guru99';

Syntaksiselitys:

  • Lause määrittää muuttujan 'Native_var', jonka tietotyyppi on NVARCHAR2 ja jonka enimmäiskoko on 10.
PITKÄ ja PITKÄ RAW Tämä tietotyyppi tallentaa suuria teksti- tai raakatietoja, joiden enimmäiskoko on 2 Gt.

  • Näitä käytetään pääasiassa tietosanakirjassa.
  • LONG tallentaa merkistötiedot, kun taas LONG RAW tallentaa tiedot binäärimuodossa.
  • LONG RAW hyväksyy mediatiedostoja ja kuvia, kun taas LONG toimii vain datan kanssa, joka voidaan tallentaa merkistöä käyttäen.
Large_text LONG;
Large_raw LONG RAW;

Syntaksiselitys:

  • Lauseke määrittelee LONG-tietotyypin 'Large_text' ja LONG RAW -tietotyypin 'Large_raw'.

Huomautus: LONG-tietotyypin käyttöä ei suositella OracleLOB-tietotyyppiä tulisi suosia.

PL/SQL NUMERO Tietotyyppi

Tämä tietotyyppi tallentaa kiinteitä tai liukulukuja enintään 38 numeron tarkkuudella. Sitä käytetään työskentelemään kenttien kanssa, jotka sisältävät vain numerotietoja. Muuttuja voidaan deklaroida joko tarkkuudella ja desimaalilukutiedoilla tai ilman niitä. Arvoja ei tarvitse laittaa lainausmerkkeihin, kun ne annetaan.

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

Syntaksiselitys:

  • Ensimmäisessä deklaraatiossa määritetään muuttuja 'A', jonka tietotyyppi on numero, kokonaistarkkuudella 8 ja 2 desimaalia.
  • Toinen määrittää luvun 'B', jonka tietotyyppi on numero, kokonaistarkkuudella 8 ja ilman desimaalilukuja.
  • Kolmas on yleisin, ja se määrittelee numerotietotyypin 'C' ilman tarkkuus- tai desimaalirajoituksia. Se voi sisältää jopa 38 numeroa.

PL/SQL BOOLEAN-tietotyyppi

Tämä tietotyyppi tallentaa loogisia arvoja. Oracle Totuusarvoinen tietotyyppi edustaa joko TOSI- tai EPÄTOSI-arvoa ja sitä käytetään pääasiassa ehdollisissa lauseissa. Arvoja ei tarvitse laittaa lainausmerkkeihin, kun ne on määritetty.

Var1 BOOLEAN;

Syntaksiselitys:

  • Muuttuja 'Var1' on määritelty BOOLEAN-tietotyypiksi. Tuloste on joko true tai false asetetusta ehdosta riippuen.

PL/SQL DATE Tietotyyppi

Tämä tietotyyppi tallentaa arvot päivämäärämuodossa, kuten päivämäärä, kuukausi ja vuosi. Aina kun muuttuja on määritelty DATE-tietotyypillä, se voi sisältää aikatietoja; oletusarvoisesti aika asetetaan arvoon 12:00:00, jos sitä ei ole määritetty. Arvot on kirjoitettava lainausmerkkeihin, kun ne annetaan.

Standardi Oracle Tulon ja lähdön aikamuoto on 'PP-MA-VV', joka asetetaan NLS_PARAMETERS (NLS_DATE_FORMAT) -parametrissa istuntotasolla.

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

Syntaksiselitys:

  • Muuttuja 'newyear' on deklaroitu DATE-tietotyypiksi ja sille on annettu arvo 1. tammikuuta 2015.
  • Toinen määrittely määrittää 'current_date'-date-tietotyypiksi ja määrittää sille nykyisen järjestelmäpäivämäärän.
  • Molemmat muuttujat sisältävät aikatietoa.

PL/SQL LOB-tietotyyppi

Tätä tietotyyppiä käytetään pääasiassa suurten, rakenteettomien tietolohkojen, kuten kuvien ja multimediatiedostojen, tallentamiseen ja käsittelyyn. Oracle suosii LOB-tietotyyppiä LONG-tietotyyppiin verrattuna, koska se on joustavampi. LOB:n tärkeimmät edut LONG-tietotyyppiin verrattuna ovat:

  • Taulukko on rajoitettu yhteen LONG-sarakkeeseen, kun taas LOB-sarakkeiden määrää ei ole rajoitettu.
  • Tietorajapintatyökalut hyväksyvät LOB-sarakkeet replikoinnin aikana, mutta jättävät pois LONG-sarakkeet, jotka on replikoitava manuaalisesti.
  • LONG-sarake voi tallentaa jopa 2 Gt, kun taas LOB-sarake voi tallentaa jopa 128 Tt.
  • Oracle parantelee LOB-tietotyyppiä jatkuvasti jokaisessa julkaisussa, kun taas LONG on pysynyt suurelta osin muuttumattomana.

Joten on aina hyvä käyttää LOB-tietotyyppiä LONG-tietotyypin sijaan. Alla olevat eri LOB-tietotyypit voivat tallentaa jopa 128 teratavua:

  1. BLOB
  2. CLOB ja NCLOB
  3. BFILE
Tietotyyppi Tuotetiedot Syntaksi
BLOB Tämä tietotyyppi tallentaa LOB-tietoja binääritiedostomuodossa enintään 128 teratavua. Se ei tallenna tietoja merkistötietojen perusteella, joten se voi tallentaa jäsentämättömiä tietoja, kuten multimediaobjekteja ja kuvia.
Binary_data BLOB;

Syntaksiselitys:

  • Muuttuja 'Binary_data' on ilmoitettu BLOB-objektina.
CLOB ja NCLOB CLOB tallentaa LOB-tiedot merkistöön, kun taas NCLOB tallentaa tiedot natiiviin merkistöön. Koska nämä käyttävät merkistöön perustuvaa tallennusta, ne eivät voi tallentaa tietoja, kuten multimediaa tai kuvia. Suurin koko on 128 Tt.
Charac_data CLOB;

Syntaksiselitys:

  • Muuttuja 'Charac_data' on ilmoitettu CLOB-tietotyypiksi.
BFILE
  • BFILE tallentaa strukturoimattoman binääridatan tietokannan ulkopuolelle käyttöjärjestelmätiedostona.
  • Käyttöjärjestelmä rajoittaa BFILE-tiedoston kokoa, ja tiedostot ovat vain luku -tilassa eikä niitä voi muokata.

UKK

CHAR on kiinteän pituinen ja täyttää ilmoitetun koon tyhjät kohdat, mikä tuhlaa tilaa lyhyiden arvojen vuoksi. VARCHAR2 on vaihtelevan pituinen ja tallentaa vain varsinaiset merkit, joten sitä suositellaan useimmille merkkijonosarakkeille.

LOB sallii useita sarakkeita taulukkoa kohden, tallentaa jopa 128 Tt ja sitä parannetaan jatkuvasti jokaisessa julkaisussa. LONG on rajoitettu yhteen sarakkeeseen, sen koko on enintään 2 Gt ja se on säilytetty pääasiassa taaksepäin yhteensopivuuden vuoksi.

Ei vanhemmissa versioissa. BOOLEAN oli vain PL/SQL:ssä käytettävä tyyppi, joten taulukon sarakkeissa käytettiin sen sijaan NUMBER- tai CHAR-lippua. Sitä käytetään suoraan lohkojen sisällä ehdollisessa logiikassa.

Kyllä. Profiloimalla näytearvoja pituuden, alueen ja muodon suhteen tekoäly voi ehdottaa VARCHAR2-, NUMBER-, DATE- tai LOB-muuttujaa ja merkitä ylisuuret sarakkeet. Vahvista valinta tulevia tietoja vasten.

Kyllä. DATE tallentaa vuosisadan, vuoden, kuukauden, päivän, tunnin, minuutin ja sekunnin. Jos aikaa ei anneta, oletusarvo on keskiyö. Murtolukujen tai aikavyöhykkeiden kohdalla käytä TIMESTAMP-funktiota.

Tiivistä tämä viesti seuraavasti: