Oracle PL/SQL-datatyper: Boolean, tal, dato [eksempel]
โก Smart opsummering
PL/SQL-datatyper definerer, hvordan Oracle lagrer, hรฅndterer og begrรฆnser hver vรฆrdi i en blok. De grupperes i tegn-, tal-, booleske-, dato- og store objektfamilier (LOB), hver med sit eget lagringsformat, stรธrrelsesgrรฆnser og tildelingsregler.

Hvad er PL/SQL-datatyper?
Datatyper I PL/SQL defineres hvordan data skal lagres, hรฅndteres og behandles af Oracle under lagring og behandling. Datatyper er knyttet til et specifikt lagringsformat og omrรฅdebegrรฆnsninger. Oracle, tildeles hver vรฆrdi eller konstant en datatype.
Den stรธrste forskel mellem PL/SQL og SQL datatyper er, at SQL-datatyper er begrรฆnset til tabelkolonner, mens PL/SQL-datatyper bruges i PL/SQL blokke. Mere om dette senere i selvstudiet.
Fรธlgende er et diagram over de forskellige Oracle PL/SQL-datatyper:

PL/SQL KARAKTER Datatype
Denne datatype gemmer alfanumeriske tegn i strengformat. Literalvรฆrdierne skal altid omsluttes af enkelte anfรธrselstegn, nรฅr de tildeles en CHARACTER-datatype.
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 en strengvรฆrdi, og strengens stรธrrelse er fast pรฅ tidspunktet for deklarationen. variabel.
|
grade CHAR; manager CHAR (10):= 'guru99'; Syntaks forklaring:
|
| VARCHAR2 | Denne datatype gemmer en streng, men lรฆngden er ikke fast.
|
manager VARCHAR2(10) := 'guru99'; Syntaks forklaring:
|
| VARCHAR | Dette er synonymt med VARCHAR2-datatypen.
|
manager VARCHAR(10) := 'guru99'; Syntaks forklaring:
|
| NCHAR | Denne datatype er den samme som CHAR, men tegnsรฆttet er det nationale tegnsรฆt.
|
native NCHAR(10);
Syntaks forklaring:
|
| NVARCHAR2 | Denne datatype er den samme som VARCHAR2, men tegnsรฆttet er det nationale tegnsรฆt.
|
Native_var NVARCHAR2(10):= 'guru99'; Syntaks forklaring:
|
| LANG og LANG Rร | Denne datatype lagrer stor tekst eller rรฅdata pรฅ op til en maksimal stรธrrelse pรฅ 2 GB.
|
Large_text LONG; Large_raw LONG RAW; Syntaks forklaring:
Bemรฆrk: Brug af datatypen LONG anbefales ikke af OracleLOB-datatypen bรธr foretrรฆkkes i stedet. |
PL/SQL NUMMER Datatype
Denne datatype gemmer faste eller flydende tal med en prรฆcision pรฅ op til 38 cifre. Den bruges til at arbejde med felter, der kun indeholder taldata. Variablen kan deklareres enten med prรฆcision og decimaldata eller uden dem. Vรฆrdier behรธver ikke at vรฆre omsluttet af anfรธrselstegn, nรฅr de tildeles.
A NUMBER(8,2); B NUMBER(8); C NUMBER;
Syntaks forklaring:
- Den fรธrste deklaration deklarerer variablen 'A' af datatypen tal med en samlet prรฆcision pรฅ 8 og 2 decimaler.
- Den anden erklรฆrer 'B' af taldatatypen med total prรฆcision 8 og ingen decimalcifre.
- Den tredje er den mest generiske, idet den deklarerer 'C' af taldatatypen uden begrรฆnsning pรฅ prรฆcision eller decimaler. Den kan tage op til 38 cifre.
PL/SQL BOOLEAN Datatype
Denne datatype gemmer logiske vรฆrdier. Oracle Booleske datatyper reprรฆsenterer enten SAND eller FALSK og bruges primรฆrt i betingede sรฆtninger. Vรฆrdier behรธver ikke at vรฆre omsluttet af anfรธrselstegn, nรฅr de tildeles.
Var1 BOOLEAN;
Syntaks forklaring:
- Variablen 'Var1' erklรฆres som en BOOLEAN-datatype. Outputtet vil enten vรฆre sandt eller falsk baseret pรฅ den angivne betingelse.
PL/SQL DATO Datatype
Denne datatype gemmer vรฆrdier i datoformat, som dato, mรฅned og รฅr. Nรฅr en variabel defineres med datatypen DATE, kan den indeholde tidsoplysninger; som standard er tiden indstillet til 12:00:00, hvis den ikke er angivet. Vรฆrdier skal omsluttes af anfรธrselstegn, nรฅr de tildeles.
Standarden Oracle Tidsformatet for input og output er 'DD-MON-YY', som er indstillet til NLS_PARAMETERS (NLS_DATE_FORMAT) pรฅ sessionsniveau.
newyear DATE:= '01-JAN-2015'; current_date DATE:= SYSDATE;
Syntaks forklaring:
- Variablen 'nyรฅr' erklรฆres som datatypen DATE og tildeles vรฆrdien 1. januar 2015.
- Den anden deklaration erklรฆrer 'current_date' som DATE-datatypen og tildeler den aktuelle systemdato.
- Begge variabler indeholder tidsinformation.
PL/SQL LOB-datatype
Denne datatype bruges primรฆrt til at gemme og manipulere store blokke af ustruktureret data sรฅsom billeder og multimediefiler. Oracle foretrรฆkker LOB frem for LONG-datatypen, fordi den er mere fleksibel. De vigtigste fordele ved LOB frem for LONG er:
- En tabel er begrรฆnset til รฉn LONG kolonne, hvorimod der ikke er nogen begrรฆnsning pรฅ antallet af LOB-kolonner.
- Datagrรฆnsefladevรฆrktรธjer accepterer LOB under replikering, men udelader LONG-kolonner, som skal replikeres manuelt.
- En LONG-kolonne kan lagre op til 2 GB, hvorimod en LOB kan lagre op til 128 TB.
- Oracle LOB-datatypen forbedres fortsat med hver udgivelse, hvorimod LONG stort set forbliver uรฆndret.
Sรฅ det er altid en god idรฉ at bruge LOB-datatypen i stedet for LONG. De forskellige LOB-datatyper nedenfor kan lagre op til 128 terabyte:
- Blob
- CLOB og NCLOB
- BFIL
| Datatype | Beskrivelse | Syntaks |
|---|---|---|
| Blob | Denne datatype lagrer LOB-data i binรฆrt filformat pรฅ op til maksimalt 128 TB. Den lagrer ikke data baseret pรฅ tegnsรฆtdetaljer, sรฅ den kan lagre ustrukturerede data sรฅsom multimedieobjekter og billeder. |
Binary_data BLOB;
Syntaks forklaring:
|
| CLOB og NCLOB | CLOB gemmer LOB-data i tegnsรฆttet, hvorimod NCLOB gemmer data i det oprindelige tegnsรฆt. Da disse bruger tegnsรฆtbaseret lagring, kan de ikke gemme data som multimedier eller billeder. Den maksimale stรธrrelse er 128 TB. |
Charac_data CLOB;
Syntaks forklaring:
|
| BFIL |
|
