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 Description 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 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:

  • 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.