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 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 | Description | Syntaks |
---|---|---|
CHAR | Denne datatype gemmer strengværdien, og størrelsen af strengen er fastsat på tidspunktet for erklæringen af variabel.
|
grade CHAR; manager CHAR (10):= 'guru99'; Syntaks forklaring:
|
VARCHAR2 | Denne datatype gemmer strengen, men længden af strengen 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-datatypen, men tegnsættet vil for det nationale tegnsæt.
|
native NCHAR(10); Syntaks forklaring:
|
NVARCHAR2 |
Denne datatype er den samme som VARCHAR2-datatypen, men tegnsættet vil være af det nationale tegnsæt.
|
Native var NVARCHAR2(10):='guru99'; Syntaks forklaring:
|
LANG og LANG | Denne datatype bruges til at gemme stor tekst eller rå data op til den maksimale størrelse på 2 GB.
|
Large_text LONG; Large_raw LONG RAW; Syntaks forklaring:
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.
- Blob
- CLOB og NCLOB
- BFIL
Datatype | Description | 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:
|
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:
|
BFIL |
|
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.