Oracle PL/SQL-datatyper: boolsk, tall, dato [eksempel]

Hva er PL/SQL-datatyper?

Datatyper i PL/SQL brukes til å definere hvordan dataene skal lagres, håndteres og behandles av Oracle under lagring og behandling av data. Datatyper er knyttet til det spesifikke lagringsformatet og rekkeviddebegrensningene. I Oracle, hver verdi eller konstant er tilordnet en datatype.

Hovedforskjellen mellom PL/SQL og SQL datatyper er, SQL-datatypen er begrenset til tabellkolonnen mens PL/SQL-datatypene brukes i PL/SQL-blokker. Mer om dette senere i opplæringen.

Følgende er diagrammet over forskjellige Oracle PL/SQL-datatyper:

PL/SQL-datatyper
Ulike datatyper i PL/SQL

PL/SQL KARAKTER Datatype

Denne datatypen lagrer i utgangspunktet alfanumeriske tegn i strengformat.

De bokstavelige verdiene skal alltid være omgitt av enkle anførselstegn mens de tilordnes til CHARACTER-datatypen.

Denne karakterdatatypen er videre klassifisert som følger:

  • CHAR Datatype (fast strengstørrelse)
  • VARCHAR2 Datatype (variabel strengstørrelse)
  • VARCHAR Datatype
  • NCHAR (innfødt fast strengstørrelse)
  • NVARCHAR2 (native variabel strengstørrelse)
  • LANG og LANG RÅ
Data-type Tekniske beskrivelser syntax
CHAR Denne datatypen lagrer strengverdien, og størrelsen på strengen er fast på tidspunktet for deklarering av variabel.

  • Oracle ville være blankpolstret variabelen hvis variabelen ikke okkuperte hele størrelsen som er deklarert for den, derfor Oracle vil tildele minnet for deklarert størrelse selv om variabelen ikke opptok den fullt ut.
  • Størrelsesbegrensningen for denne datatypen er 1-2000 byte.
  • CHAR-datatypen er mer hensiktsmessig å bruke der hvor fast størrelsen på data vil bli håndtert.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaks forklaring:

  • Den første deklarasjonssetningen erklærte variabelen 'grad' av CHAR-datatypen med maksimal størrelse på 1 byte (standardverdi).
  • Den andre deklarasjonssetningen erklærte variabelen 'manager' av CHAR-datatypen med maksimal størrelse på 10 og tildelte verdien 'guru99' som er på 6 byte. Oracle vil tildele minnet på 10 byte i stedet for 6 byte i dette tilfellet.
VARCHAR2 Denne datatypen lagrer strengen, men lengden på strengen er ikke fast.

  • Størrelsesbegrensningen for denne datatypen er 1-4000 byte for tabellkolonnestørrelse og 1-32767 byte for variabler.
  • Størrelsen er definert for hver variabel på tidspunktet for variabeldeklarering.
  • Men Oracle vil tildele minne bare etter at variabelen er definert, dvs. Oracle vil kun vurdere den faktiske lengden på strengen som er lagret i en variabel for minneallokering i stedet for størrelsen som er gitt for en variabel i deklarasjonsdelen.
  • Det er alltid lurt å bruke VARCHAR2 i stedet for CHAR datatype for å optimalisere minnebruken.
manager VARCHAR2(10) := ‘guru99';

Syntaks forklaring:

  • Deklarasjonssetningen ovenfor erklærte variabelen 'manager' av VARCHAR2-datatypen med maksimal størrelse på 10 og tildelte verdien 'guru99' som er på 6 byte. Oracle vil tildele minne på bare 6 byte i dette tilfellet.
VARCHAR Dette er synonymt med datatypen VARCHAR2.

  • Det er alltid en god praksis å bruke VARCHAR2 i stedet for VARCHAR for å unngå atferdsendringer.
manager VARCHAR(10) := ‘guru99';

Syntaks forklaring:

  • Deklarasjonssetningen ovenfor erklærte variabelen 'manager' av VARCHAR-datatypen med maksimal størrelse på 10 og tildelte verdien 'guru99' som er på 6 byte. Oracle vil tildele minne på bare 6 byte i dette tilfellet. (ligner på VARCHAR2)
NCHAR Denne datatypen er den samme som CHAR-datatypen, men tegnsettet til det nasjonale tegnsettet.

  • Dette tegnsettet kan defineres for økten ved hjelp av NLS_PARAMETERS.
  • Tegnsettet kan enten være UTF16 eller UTF8.
  • Størrelsesbegrensningen er 1-2000 byte.
native NCHAR(10);

Syntaks forklaring:

  • Deklarasjonssetningen ovenfor erklærer variabelen "innfødt" av NCHAR-datatypen med maksimal størrelse på 10.
  • Lengden på denne variabelen avhenger av (antall lengder) per byte som definert i tegnsettet.
NVARCHAR2 Denne datatypen er den samme som VARCHAR2-datatypen, men tegnsettet vil være av det nasjonale tegnsettet.

  • Dette tegnsettet kan defineres for økten ved hjelp av NLS_PARAMETERS.
  • Tegnsettet kan enten være UTF16 eller UTF8.
  • Størrelsesbegrensningen er 1-4000 byte.
Native var NVARCHAR2(10):='guru99';

Syntaks forklaring:

  • Deklarasjonssetningen ovenfor erklærer variabelen 'Native_var' av NVARCHAR2-datatypen med maksimal størrelse på 10.
LANGT og LANGT Denne datatypen brukes til å lagre stor tekst eller rådata opp til maksimal størrelse på 2 GB.

  • Disse brukes hovedsakelig i dataordboken.
  • LONG datatype brukes til å lagre tegnsettdata, mens LONG RAW brukes til å lagre data i binært format.
  • LONG RAW-datatypen aksepterer medieobjekter, bilder osv. mens LONG bare fungerer på data som kan lagres ved hjelp av tegnsett.
Large_text LONG;
Large_raw LONG RAW;

Syntaks forklaring:

  • Deklarasjonssetningen ovenfor erklærer variabelen 'Large_text' av LONG-datatypen og 'Large_raw' av LONG RAW-datatypen.

OBS: Bruk av LONG datatype anbefales ikke av Oracle. I stedet bør LOB-datatypen foretrekkes.

PL/SQL NUMMER Datatype

Denne datatypen lagrer tall med fast eller flyttall opp til 38 sifre med presisjon. Denne datatypen brukes til å arbeide med felt som kun vil inneholde talldata. Variabelen kan deklareres enten med presisjon og desimalsifferdetaljer eller uten denne informasjonen. Verdier trenger ikke omsluttes av anførselstegn ved tilordning for denne datatypen.

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

Syntaks forklaring:

  • I det ovenstående erklærer den første erklæringen at variabelen 'A' er av talldatatype med total presisjon 8 og desimal 2.
  • Den andre erklæringen erklærer at variabelen 'B' er av talldatatype med total presisjon 8 og ingen desimal.
  • Den tredje erklæringen er den mest generiske, og erklærer at variabel 'C' er av talldatatype uten begrensning i presisjon eller desimaler. Det kan ta opptil 38 sifre.

PL/SQL BOOLEAN-datatype

Denne datatypen lagrer de logiske verdiene. Oracle Boolsk datatype representerer enten TRUE eller FALSE og brukes hovedsakelig i betingede utsagn. Verdier trenger ikke omsluttes av anførselstegn ved tilordning for denne datatypen.

Var1 BOOLEAN;

Syntaks forklaring:

  • I det ovenstående er variabel 'Var1' erklært som BOOLEAN datatype. Utdata fra koden vil være enten sann eller usann basert på betingelsessettet.

PL/SQL DATO Datatype

Denne datatypen lagrer verdiene i datoformat, som dato, måned og år. Når en variabel er definert med DATE-datatype sammen med datoen, kan den inneholde tidsinformasjon, og som standard er tidsinformasjon satt til 12:00:00 hvis ikke spesifisert. Verdier må omsluttes av anførselstegn ved tilordning for denne datatypen.

Standard Oracle tidsformatet for input og output er 'DD-MON-YY' og det er igjen satt til NLS_PARAMETERS (NLS_DATE_FORMAT) på øktnivå.

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

Syntaks forklaring:

  • I det ovenstående er variabel 'nyttår' erklært som datatype DATO og tildelt verdien 1. januarst, 2015 dato.
  • Den andre erklæringen erklærer variabelen gjeldende_dato som datatype DATO og tilordnet verdien med gjeldende systemdato.
  • Begge disse variablene inneholder tidsinformasjonen.

PL/SQL LOB-datatype

Denne datatypen brukes hovedsakelig til å lagre og manipulere store blokker med ustrukturerte data som bilder, multimediafiler, etc. Oracle foretrekker LOB i stedet for en LONG datatype da den er mer fleksibel enn LONG datatypen. Nedenfor er de få viktigste fordelene med LOB fremfor LANG datatype.

  • Antall kolonner i en tabell med LONG datatype er begrenset til 1, mens en tabell ikke har noen begrensning på et antall kolonner med LOB datatype.
  • Datagrensesnittverktøyet godtar LOB-datatypen for tabellen under datareplikering, men utelater LONG-kolonnen i tabellen. Disse LANGE kolonnene må replikeres manuelt.
  • Størrelsen på LONG-kolonnen er 2GB, mens LOB kan lagre opptil 128 TB.
  • Oracle forbedrer stadig LOB-datatypen i hver av deres utgivelser i henhold til moderne krav, mens LONG-datatypen er konstant og ikke får mange oppdateringer.

Så det er alltid greit å bruke LOB-datatypen i stedet for LONG-datatypen. Følgende er de forskjellige LOB-datatypene. De kan lagre opptil 128 terabyte.

  1. BLOB
  2. CLOB og NCLOB
  3. BFILE
Data-type Tekniske beskrivelser syntax
BLOB Denne datatypen lagrer LOB-dataene i det binære filformatet opp til den maksimale størrelsen på 128 TB. Dette lagrer ikke data basert på tegnsettdetaljene, slik at det kan lagre ustrukturerte data som multimedieobjekter, bilder osv.
Binary_data BLOB;

Syntaks forklaring:

  • I det ovenstående er variabel 'Binary_data' erklært som en BLOB.
CLOB og NCLOB CLOB-datatypen lagrer LOB-dataene i tegnsettet, mens NCLOB lagrer dataene i det opprinnelige tegnsettet. Siden disse datatypene bruker tegnsettbasert lagring, kan disse ikke lagre data som multimedia, bilder osv. som ikke kan settes inn i en tegnstreng. Maksimal størrelse på disse datatypene er 128 TB.
Charac_data CLOB;

Syntaks forklaring:

  • I det ovenstående er variabel 'Charac_data' erklært som CLOB-datatype.
BFILE
  • BFILE er datatypene som lagret de ustrukturerte binære formatdataene utenfor databasen som en operativsystemfil.
  • Størrelsen på BFILE er til et begrenset operativsystem, og de er skrivebeskyttede filer og kan ikke endres.

Sammendrag

Vi har dekket de forskjellige enkle datatypene som er tilgjengelige i PL / SQL sammen med deres syntaks. Vi vil lære om komplekse datatyper i videre emner.