Oracle PL/SQL-datatyper: Boolean, tal, dato [eksempel]

Hvad er PL/SQL-datatyper?

Datatyper i PL/SQL bruges til at definere, hvordan data skal opbevares, hรฅndteres og behandles af Oracle under datalagring og -behandling. Datatyper er knyttet til det specifikke lagerformat og rรฆkkeviddebegrรฆnsninger. I Oracle, hver vรฆrdi eller konstant er tildelt en datatype.

Den stรธrste forskel mellem PL/SQL og SQL datatyper er, SQL-datatypen er begrรฆnset til tabelkolonnen, mens PL/SQL-datatyperne bruges i PL/SQL blokke. Mere om dette senere i selvstudiet.

Fรธlgende er diagrammet over forskellige Oracle PL/SQL-datatyper:

PL/SQL-datatyper
Forskellige datatyper i PL/SQL

PL/SQL KARAKTER Datatype

Denne datatype gemmer grundlรฆggende alfanumeriske tegn i strengformat.

De bogstavelige vรฆrdier skal altid vรฆre omgivet af enkelte anfรธrselstegn, mens de tildeles til CHARACTER-datatypen.

Denne karakterdatatype er yderligere klassificeret som fรธlger:

  • CHAR Datatype (fast strengstรธrrelse)
  • VARCHAR2 Datatype (variabel strengstรธrrelse)
  • VARCHAR Datatype
  • NCHAR (native fast streng stรธrrelse)
  • NVARCHAR2 (native variabel strengstรธrrelse)
  • LANG og LANG Rร…
Datatype Beskrivelse Syntaks
CHAR Denne datatype gemmer strengvรฆrdien, og stรธrrelsen af โ€‹โ€‹strengen er fastsat pรฅ tidspunktet for erklรฆringen af variabel.

  • Oracle ville vรฆre blankpolstret variablen, hvis variablen ikke optog hele den stรธrrelse, der er blevet erklรฆret for den, derfor Oracle vil allokere hukommelsen til den erklรฆrede stรธrrelse, selvom variablen ikke optog den fuldt ud.
  • Stรธrrelsesbegrรฆnsningen for denne datatype er 1-2000 bytes.
  • CHAR-datatypen er mere passende at bruge, hvor der nogensinde er fastlagt, hvor datastรธrrelsen vil blive hรฅndteret.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaks forklaring:

  • Den fรธrste erklรฆringserklรฆring erklรฆrede variablen 'grad' af CHAR-datatypen med den maksimale stรธrrelse pรฅ 1 byte (standardvรฆrdi).
  • Den anden erklรฆringserklรฆring erklรฆrede variablen 'manager' af CHAR-datatypen med den maksimale stรธrrelse pรฅ 10 og tildelte vรฆrdien 'guru99', som er pรฅ 6 bytes. Oracle vil allokere hukommelsen pรฅ 10 bytes i stedet for 6 bytes i dette tilfรฆlde.
VARCHAR2 Denne datatype gemmer strengen, men lรฆngden af โ€‹โ€‹strengen er ikke fast.

  • Stรธrrelsesbegrรฆnsningen for denne datatype er 1-4000 bytes for tabelkolonnestรธrrelse og 1-32767 bytes for variabler.
  • Stรธrrelsen er defineret for hver variabel pรฅ tidspunktet for variabeldeklarationen.
  • Men Oracle vil kun tildele hukommelse efter at variablen er defineret, dvs. Oracle vil kun overveje den faktiske lรฆngde af strengen, der er gemt i en variabel til hukommelsesallokering i stedet for den stรธrrelse, der er givet for en variabel i deklarationsdelen.
  • Det er altid godt at bruge VARCHAR2 i stedet for CHAR datatype for at optimere hukommelsesforbruget.
manager VARCHAR2(10) := โ€˜guru99';

Syntaks forklaring:

  • Ovenstรฅende erklรฆring erklรฆrede variablen 'manager' af VARCHAR2-datatypen med den maksimale stรธrrelse pรฅ 10 og tildelte vรฆrdien 'guru99', som er pรฅ 6 bytes. Oracle vil tildele hukommelse pรฅ kun 6 bytes i dette tilfรฆlde.
VARCHAR Dette er synonymt med VARCHAR2-datatypen.

  • Det er altid en god praksis at bruge VARCHAR2 i stedet for VARCHAR for at undgรฅ adfรฆrdsรฆndringer.
manager VARCHAR(10) := โ€˜guru99';

Syntaks forklaring:

  • Ovenstรฅende erklรฆring erklรฆrede variablen 'manager' af VARCHAR-datatypen med den maksimale stรธrrelse pรฅ 10 og tildelte vรฆrdien 'guru99', som er pรฅ 6 bytes. Oracle vil tildele hukommelse pรฅ kun 6 bytes i dette tilfรฆlde. (Svarer til VARCHAR2)
NCHAR Denne datatype er den samme som CHAR-datatypen, men tegnsรฆttet vil for det nationale tegnsรฆt.

  • Dette tegnsรฆt kan defineres for sessionen ved hjรฆlp af NLS_PARAMETERS.
  • Tegnsรฆttet kan enten vรฆre UTF16 eller UTF8.
  • Stรธrrelsesbegrรฆnsningen er 1-2000 bytes.
native NCHAR(10);

Syntaks forklaring:

  • Ovenstรฅende erklรฆringserklรฆring erklรฆrer variablen "native" af NCHAR-datatypen med den maksimale stรธrrelse pรฅ 10.
  • Lรฆngden af โ€‹โ€‹denne variabel afhรฆnger af (antal lรฆngder) pr. byte som defineret i tegnsรฆttet.
NVARCHAR2 Denne datatype er den samme som VARCHAR2-datatypen, men tegnsรฆttet vil vรฆre af det nationale tegnsรฆt.

  • Dette tegnsรฆt kan defineres for sessionen ved hjรฆlp af NLS_PARAMETERS.
  • Tegnsรฆttet kan enten vรฆre UTF16 eller UTF8.
  • Stรธrrelsesbegrรฆnsningen er 1-4000 bytes.
Native var NVARCHAR2(10):='guru99';

Syntaks forklaring:

  • Ovenstรฅende erklรฆring erklรฆrer variablen 'Native_var' af NVARCHAR2-datatypen med den maksimale stรธrrelse pรฅ 10.
LANG og LANG Denne datatype bruges til at gemme stor tekst eller rรฅ data op til den maksimale stรธrrelse pรฅ 2 GB.

  • Disse bruges hovedsageligt i dataordbogen.
  • LONG datatype bruges til at gemme tegnsรฆtdata, mens LONG RAW bruges til at gemme data i binรฆrt format.
  • LONG RAW datatype accepterer medieobjekter, billeder osv., hvorimod LONG kun virker pรฅ data, der kan gemmes ved hjรฆlp af tegnsรฆt.
Large_text LONG;
Large_raw LONG RAW;

Syntaks forklaring:

  • Ovenstรฅende erklรฆring erklรฆrer variablen 'Large_text' af LONG-datatypen og 'Large_raw' af LONG RAW-datatypen.

Bemรฆrk: Brug af LONG datatype anbefales ikke af Oracle. I stedet bรธr LOB-datatypen foretrรฆkkes.

PL/SQL NUMMER Datatype

Denne datatype gemmer faste eller flydende kommanumre op til 38 cifre med prรฆcision. Denne datatype bruges til at arbejde med felter, som kun vil indeholde taldata. Variablen kan deklareres enten med prรฆcision og decimaltalsdetaljer eller uden denne information. Vรฆrdier behรธver ikke at vรฆre omgivet af anfรธrselstegn ved tildeling for denne datatype.

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

Syntaks forklaring:

  • I ovenstรฅende erklรฆrer den fรธrste erklรฆring, at variablen 'A' er af taldatatype med total prรฆcision 8 og decimaltal 2.
  • Den anden erklรฆring erklรฆrer, at variablen 'B' er af taldatatype med total prรฆcision 8 og ingen decimalcifre.
  • Den tredje erklรฆring er den mest generiske, erklรฆrer, at variabel 'C' er af taldatatype uden begrรฆnsning i prรฆcision eller decimaler. Det kan maksimalt tage 38 cifre.

PL/SQL BOOLEAN Datatype

Denne datatype gemmer de logiske vรฆrdier. Oracle Boolesk datatype reprรฆsenterer enten SAND eller FALSK og bruges hovedsageligt i betingede udsagn. Vรฆrdier behรธver ikke at vรฆre omgivet af anfรธrselstegn ved tildeling for denne datatype.

Var1 BOOLEAN;

Syntaks forklaring:

  • I ovenstรฅende er variabel 'Var1' erklรฆret som BOOLEAN datatype. Udgangen af โ€‹โ€‹koden vil vรฆre enten sand eller falsk baseret pรฅ betingelsessรฆttet.

PL/SQL DATO Datatype

Denne datatype gemmer vรฆrdierne i datoformat, som dato, mรฅned og รฅr. Nรฅr en variabel er defineret med DATE-datatypen sammen med datoen, kan den indeholde tidsinformation, og som standard er tidsinformation sat til 12:00:00, hvis den ikke er angivet. Vรฆrdier skal omsluttes af anfรธrselstegn, mens der tildeles for denne datatype.

Standarden Oracle tidsformatet for input og output er 'DD-MON-YY' og det er igen sat til NLS_PARAMETERS (NLS_DATE_FORMAT) pรฅ sessionsniveau.

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

Syntaks forklaring:

  • I ovenstรฅende er variabel 'nytรฅr' erklรฆret som DATE-datatype og tildelt vรฆrdien 1. januarst, 2015 dato.
  • Den anden erklรฆring erklรฆrer variablen aktuel_dato som DATE-datatype og tildelt vรฆrdien med aktuel systemdato.
  • Begge disse variable holder tidsinformationen.

PL/SQL LOB-datatype

Denne datatype bruges hovedsageligt til at gemme og manipulere store blokke af ustrukturerede data som billeder, multimediefiler osv. Oracle foretrรฆkker LOB i stedet for en LONG datatype, da den er mere fleksibel end LONG datatypen. Nedenstรฅende er de fรฅ stรธrste fordele ved LOB frem for LANG datatype.

  • Antallet af kolonner i en tabel med LONG datatype er begrรฆnset til 1, hvorimod en tabel ikke har nogen begrรฆnsning pรฅ et antal kolonner med LOB datatype.
  • Datagrรฆnsefladevรฆrktรธjet accepterer LOB-datatypen for tabellen under datareplikering, men det udelader LONG-kolonnen i tabellen. Disse LANGE kolonner skal replikeres manuelt.
  • Stรธrrelsen pรฅ LONG-sรธjlen er 2GB, hvorimod LOB kan gemme op til 128 TB.
  • Oracle forbedrer konstant LOB-datatypen i hver af deres udgivelser i henhold til det moderne krav, hvorimod LONG datatypen er konstant og ikke fรฅr mange opdateringer.

Sรฅ det er altid godt at bruge LOB-datatypen i stedet for LONG-datatypen. Fรธlgende er de forskellige LOB-datatyper. De kan gemme op til stรธrrelsen pรฅ 128 terabyte.

  1. Blob
  2. CLOB og NCLOB
  3. BFIL
Datatype Beskrivelse Syntaks
Blob Denne datatype gemmer LOB-dataene i det binรฆre filformat op til den maksimale stรธrrelse pรฅ 128 TB. Dette gemmer ikke data baseret pรฅ tegnsรฆttets detaljer, sรฅ det kan gemme de ustrukturerede data sรฅsom multimedieobjekter, billeder osv.
Binary_data BLOB;

Syntaks forklaring:

  • I ovenstรฅende er variabel 'Binary_data' erklรฆret som en BLOB.
CLOB og NCLOB CLOB-datatypen gemmer LOB-dataene i tegnsรฆttet, hvorimod NCLOB gemmer dataene i det oprindelige tegnsรฆt. Da disse datatyper bruger tegnsรฆtbaseret lagring, kan disse ikke gemme data som multimedier, billeder osv., der ikke kan sรฆttes i en tegnstreng. Den maksimale stรธrrelse af disse datatyper er 128 TB.
Charac_data CLOB;

Syntaks forklaring:

  • I ovenstรฅende er variabel 'Charac_data' erklรฆret som CLOB-datatype.
BFIL
  • BFILE er de datatyper, der lagrede de ustrukturerede binรฆre formatdata uden for databasen som en operativsystemfil.
  • Stรธrrelsen pรฅ BFILE er til et begrรฆnset operativsystem, og de er skrivebeskyttede filer og kan ikke รฆndres.

Resumรฉ

Vi har dรฆkket de forskellige simple datatyper, der er tilgรฆngelige i PL / SQL sammen med deres syntaks. Vi vil lรฆre om komplekse datatyper i yderligere emner.

Opsummer dette indlรฆg med: