Oracle PL / SQL-gegevenstypen: booleaans, getal, datum (voorbeeld)

Inhoudsopgave:

Anonim

Wat zijn PL / SQL-gegevenstypen?

Een gegevenstype is gekoppeld aan het specifieke opslagformaat en bereikbeperkingen. In Oracle wordt aan elke waarde of constante een gegevenstype toegewezen.

In feite definieert het hoe de gegevens worden opgeslagen, behandeld en behandeld door Oracle tijdens de gegevensopslag en -verwerking.

Het belangrijkste verschil tussen PL / SQL- en SQL-gegevenstypen is dat het SQL-gegevenstype beperkt is tot de tabelkolom, terwijl de PL / SQL-gegevenstypen worden gebruikt in de PL / SQL-blokken. Hierover later in de tutorial meer.

Hieronder volgt het diagram van verschillende gegevenstypen in PL / SQL

In deze tutorial leer je-

  • KARAKTER Gegevenstype
  • NUMBER gegevenstype
  • BOOLEAN-gegevenstype
  • DATUM Gegevenstype
  • LOB-gegevenstype

KARAKTER Gegevenstype:

Dit gegevenstype slaat in feite alfanumerieke tekens op in tekenreeksindeling.

De letterlijke waarden moeten altijd tussen enkele aanhalingstekens staan ​​terwijl ze aan het gegevenstype CHARACTER worden toegewezen.

Dit karaktergegevenstype wordt verder als volgt geclassificeerd:

  • CHAR Gegevenstype (vaste tekenreeksgrootte)
  • VARCHAR2 Gegevenstype (variabele tekenreeksgrootte)
  • VARCHAR Gegevenstype
  • NCHAR (native vaste tekenreeksgrootte)
  • NVARCHAR2 (tekenreeksgrootte van native variabele)
  • LANG en LANG RAUW
Data type Omschrijving Syntaxis
CHAR Dit gegevenstype slaat de tekenreekswaarde op en de grootte van de tekenreeks staat vast op het moment dat de variabele wordt gedeclareerd.
  • Oracle zou de variabele blanco bevatten als de variabele niet de volledige grootte bezet die ervoor is gedeclareerd. Daarom zal Oracle het geheugen toewijzen aan de aangegeven grootte, zelfs als de variabele deze niet volledig bezet.
  • De groottebeperking voor dit gegevenstype is 1-2000 bytes.
  • CHAR-gegevenstype is geschikter om te gebruiken waar ooit de grootte van de gegevens zal worden afgehandeld.
grade CHAR;manager CHAR (10):= 'guru99';
Syntaxis Uitleg:
  • De eerste declaratie-instructie verklaarde de variabele 'grade' van het CHAR-gegevenstype met de maximale grootte van 1 byte (standaardwaarde).
  • De tweede declaratie-instructie declareerde de variabele 'manager' van het CHAR-gegevenstype met de maximale grootte van 10 en kreeg de waarde 'guru99' toegewezen die 6 bytes is. Oracle wijst in dit geval het geheugen van 10 bytes toe in plaats van 6 bytes.
VARCHAR2 Dit gegevenstype slaat de string op, maar de lengte van de string staat niet vast.
  • De groottebeperking voor dit gegevenstype is 1-4000 bytes voor tabelkolommen en 1-32767 bytes voor variabelen.
  • De grootte wordt voor elke variabele gedefinieerd op het moment dat de variabele wordt gedeclareerd.
  • Maar Oracle zal pas geheugen toewijzen nadat de variabele is gedefinieerd, dwz Oracle zal alleen de werkelijke lengte van de string die in een variabele is opgeslagen voor geheugentoewijzing in aanmerking nemen in plaats van de grootte die is opgegeven voor een variabele in het declaratiegedeelte.
  • Het is altijd goed om VARCHAR2 te gebruiken in plaats van het CHAR-gegevenstype om het geheugengebruik te optimaliseren.
manager VARCHAR2(10) := ‘guru99';
Syntaxis Uitleg:
  • De bovenstaande declaratie-instructie verklaarde de variabele 'manager' van het VARCHAR2-gegevenstype met de maximale grootte van 10 en kreeg de waarde 'guru99' toegewezen die 6 bytes is. Oracle wijst in dit geval slechts 6 bytes geheugen toe.
VARCHAR Dit is synoniem met het gegevenstype VARCHAR2.
  • Het is altijd een goede gewoonte om VARCHAR2 te gebruiken in plaats van VARCHAR om gedragsveranderingen te vermijden.
manager VARCHAR(10) := ‘guru99';
Syntaxis Uitleg:
  • De bovenstaande declaratie-instructie verklaarde de variabele 'manager' van het VARCHAR-gegevenstype met de maximale grootte van 10 en kreeg de waarde 'guru99' toegewezen die 6 bytes is. Oracle wijst in dit geval slechts 6 bytes geheugen toe. (Vergelijkbaar met VARCHAR2)
NCHAR Dit gegevenstype is hetzelfde als het CHAR-gegevenstype, maar de karakterset zal van de nationale karakterset zijn.
  • Deze karakterset kan voor de sessie worden gedefinieerd met NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De beperking van de grootte is 1-2000 bytes.
native NCHAR(10);
Syntaxis Uitleg:
  • De bovenstaande declaratieverklaring declareert de variabele 'native' van het NCHAR-gegevenstype met de maximale grootte van 10.
  • De lengte van deze variabele hangt af van het (aantal lengtes) per byte zoals gedefinieerd in de karakterset.
NVARCHAR2 Dit gegevenstype is hetzelfde als het gegevenstype VARCHAR2, maar de tekenset is van de nationale tekenset.
  • Deze karakterset kan voor de sessie worden gedefinieerd met NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De beperking van de grootte is 1-4000 bytes.
Native var NVARCHAR2(10):='guru99';
Syntaxis Uitleg:
  • De bovenstaande declaratieverklaring declareert de variabele 'Native_var' van het NVARCHAR2-gegevenstype met de maximale grootte van 10.
LANG en LANG Dit gegevenstype wordt gebruikt om grote tekst of onbewerkte gegevens op te slaan tot de maximale grootte van 2 GB.
  • Deze worden voornamelijk gebruikt in het datadictionary.
  • Het LONG-gegevenstype wordt gebruikt om tekensetgegevens op te slaan, terwijl LONG RAW wordt gebruikt om gegevens in binair formaat op te slaan.
  • LONG RAW-gegevenstype accepteert media-objecten, afbeeldingen, enz., Terwijl LONG alleen werkt op gegevens die kunnen worden opgeslagen met een tekenset.
Large_text LONG;Large_raw LONG RAW;
Syntaxis Uitleg:
  • De bovenstaande declaratie-instructie declareert de variabele 'Large_text' van het LONG-gegevenstype en 'Large_raw' van het LONG RAW-gegevenstype.
Opmerking: het gebruik van het gegevenstype LONG wordt niet aanbevolen door Oracle. In plaats daarvan verdient het gegevenstype LOB de voorkeur.

NUMBER gegevenstype:

Dit gegevenstype slaat vaste of drijvende-kommagetallen op met een precisie van maximaal 38 cijfers. Dit gegevenstype wordt gebruikt om te werken met velden die alleen cijfergegevens bevatten. De variabele kan worden gedeclareerd met precisie en decimale cijferdetails of zonder deze informatie. Waarden hoeven niet tussen aanhalingstekens te worden geplaatst bij het toewijzen aan dit gegevenstype.

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

Syntaxis Uitleg:

  • In het bovenstaande verklaart de eerste declaratie dat de variabele 'A' van het gegevenstype getallen is met een totale precisie van 8 en decimale cijfers 2.
  • De tweede declaratie verklaart dat de variabele 'B' van het gegevenstype getallen is met een totale precisie van 8 en geen decimale cijfers.
  • De derde declaratie is de meest algemene, declareert variabele 'C' van het gegevenstype getallen zonder beperking in precisie of decimalen. Het kan maximaal 38 cijfers duren.

BOOLEAN-gegevenstype:

Dit gegevenstype slaat de logische waarden op. Het vertegenwoordigt WAAR of ONWAAR en wordt voornamelijk gebruikt in voorwaardelijke instructies. Waarden hoeven niet tussen aanhalingstekens te worden geplaatst bij het toewijzen aan dit gegevenstype.

Var1 BOOLEAN;

Syntaxis Uitleg:

  • In het bovenstaande wordt variabele 'Var1' gedeclareerd als BOOLEAN-gegevenstype. De uitvoer van de code zal waar of onwaar zijn op basis van de gestelde voorwaarden.

DATUM Gegevenstype:

Dit gegevenstype slaat de waarden op in datumnotatie, als datum, maand en jaar. Telkens wanneer een variabele wordt gedefinieerd met het gegevenstype DATE samen met de datum, kan deze tijdinformatie bevatten en standaard wordt de tijdinformatie ingesteld op 12:00:00 als deze niet wordt gespecificeerd. Waarden moeten tussen aanhalingstekens worden geplaatst tijdens het toewijzen aan dit gegevenstype.

Het standaard Oracle-tijdformaat voor invoer en uitvoer is 'DD-MON-YY' en wordt opnieuw ingesteld op NLS_PARAMETERS (NLS_DATE_FORMAT) op sessieniveau.

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

Syntaxis Uitleg:

  • In het bovenstaande variabele 'nieuwjaar' wordt verklaard als type DATE data en de waarde van 1 januari toegekend st 2015 datum.
  • De tweede declaratie declareert de variabele current_date als DATE-gegevenstype en kent de waarde toe met de huidige systeemdatum.
  • Beide variabelen bevatten de tijdinformatie.

LOB-gegevenstype:

Dit gegevenstype wordt voornamelijk gebruikt om grote blokken ongestructureerde gegevens zoals afbeeldingen, multimediabestanden, enz. Op te slaan en te manipuleren. Oracle geeft de voorkeur aan LOB in plaats van het gegevenstype LONG omdat het flexibeler is dan het gegevenstype LONG. De onderstaande zijn de weinige belangrijkste voordelen van LOB ten opzichte van het LONG-gegevenstype.

  • Het aantal kolommen in een tabel met het gegevenstype LONG is beperkt tot 1, terwijl een tabel geen beperking kent voor een aantal kolommen met het gegevenstype LOB.
  • De gegevensinterfacetool accepteert het LOB-gegevenstype van de tabel tijdens gegevensreplicatie, maar laat de LONG-kolom van de tabel weg. Deze LONG-kolommen moeten handmatig worden gerepliceerd.
  • De grootte van de LONG-kolom is 2 GB, terwijl LOB maximaal 128 TB kan opslaan.
  • Oracle verbetert voortdurend het LOB-gegevenstype in elk van hun releases volgens de moderne vereisten, terwijl het LONG-gegevenstype constant is en niet veel updates krijgt.

Het is dus altijd goed om het LOB-gegevenstype te gebruiken in plaats van het LONG-gegevenstype. Hieronder volgen de verschillende LOB-gegevenstypen. Ze kunnen maximaal 128 terabyte opslaan.

  1. BLOB
  2. CLOB en NCLOB
  3. BFILE
Data type Omschrijving Syntaxis
BLOB

Dit gegevenstype slaat de LOB-gegevens op in het binaire bestandsformaat tot de maximale grootte van 128 TB. Dit slaat geen gegevens op op basis van de details van de tekenset, zodat het de ongestructureerde gegevens kan opslaan zoals multimedia-objecten, afbeeldingen, enz.

Binary_data BLOB;

Syntaxis Uitleg:

  • In het bovenstaande wordt de variabele 'Binary_data' gedeclareerd als een BLOB.
CLOB en NCLOB

CLOB-gegevenstype slaat de LOB-gegevens op in de tekenset, terwijl NCLOB de gegevens opslaat in de oorspronkelijke tekenset. Aangezien deze gegevenstypen gebruikmaken van op tekenset gebaseerde opslag, kunnen deze geen gegevens opslaan zoals multimedia, afbeeldingen, enz. Die niet in een tekenreeks kunnen worden geplaatst. De maximale grootte van deze gegevenstypen is 128 TB.

Charac_data CLOB;

Syntaxis Uitleg:

  • In het bovenstaande wordt variabele 'Charac_data' gedeclareerd als CLOB-gegevenstype.
BFILE
  • BFILE zijn de gegevenstypen die de ongestructureerde gegevens in binaire indeling buiten de database hebben opgeslagen als een bestand van het besturingssysteem.
  • De grootte van BFILE is voor een beperkt besturingssysteem en het zijn alleen-lezenbestanden die niet kunnen worden gewijzigd.

Overzicht

We hebben de verschillende eenvoudige gegevenstypen behandeld die beschikbaar zijn in PL / SQL, samen met hun syntaxis. In andere onderwerpen zullen we meer te weten komen over complexe gegevenstypen.