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.

Oppsummer dette innlegget med: