Oracle PL/SQL-gegevenstypen: Boolean, getal, datum [voorbeeld]

Wat zijn PL/SQL-gegevenstypen?

Gegevenstypen in PL/SQL worden gebruikt om te definiëren hoe de gegevens worden opgeslagen, verwerkt en behandeld Oracle tijdens de gegevensopslag en -verwerking. Gegevenstypen zijn gekoppeld aan het specifieke opslagformaat en bereikbeperkingen. In Oracle, wordt aan elke waarde of constante een gegevenstype toegewezen.

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-blokkenHierover later in de tutorial meer.

Hieronder ziet u het diagram van verschillende Oracle PL/SQL-gegevenstypen:

PL/SQL-gegevenstypen
Verschillende gegevenstypen in PL/SQL

PL/SQL KARAKTER Gegevenstype

Dit gegevenstype slaat in principe alfanumerieke tekens op in stringformaat.

De letterlijke waarden moeten altijd tussen enkele aanhalingstekens worden geplaatst wanneer ze worden toegewezen aan het gegevenstype CHARACTER.

Dit karaktergegevenstype wordt verder als volgt geclassificeerd:

  • CHAR Gegevenstype (vaste tekenreeksgrootte)
  • VARCHAR2 Gegevenstype (variabele tekenreeksgrootte)
  • VARCHAR Gegevenstype
  • NCHAR (native vaste tekenreeksgrootte)
  • NVARCHAR2 (native variabele tekenreeksgrootte)
  • LANG en LANG RAUW
Data type Beschrijving Syntaxis
CHAR Dit gegevenstype slaat de tekenreekswaarde op en de grootte van de tekenreeks ligt vast op het moment dat de tekenreeks wordt gedeclareerd variabele.

  • Oracle zou de variabele leeg opvullen als de variabele niet de volledige grootte beslaat die ervoor is gedeclareerd, vandaar Oracle zal het geheugen voor de aangegeven grootte toewijzen, zelfs als de variabele dit niet volledig in beslag neemt.
  • De groottebeperking voor dit gegevenstype is 1-2000 bytes.
  • Het CHAR-gegevenstype is geschikter om te gebruiken wanneer de gegevensgrootte ooit wordt verwerkt.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxis uitleg:

  • De eerste declaratieverklaring declareerde de variabele 'grade' van het CHAR-gegevenstype met de maximale grootte van 1 byte (standaardwaarde).
  • De tweede declaratieverklaring declareerde de variabele 'manager' van het CHAR-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval het geheugen van 10 bytes toewijzen 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 de tabelkolomgrootte en 1-32767 bytes voor variabelen.
  • De grootte wordt voor elke variabele gedefinieerd op het moment dat de variabele wordt gedeclareerd.
  • Maar Oracle zal alleen geheugen toewijzen nadat de variabele is gedefinieerd, dat wil zeggen: Oracle zal alleen rekening houden met de werkelijke lengte van de string die is opgeslagen in een variabele voor geheugentoewijzing, in plaats van met 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 declaratieverklaring verklaarde de variabele 'manager' van het VARCHAR2-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval geheugen van slechts 6 bytes toewijzen.
VARCHAR Dit is synoniem met het VARCHAR2-gegevenstype.

  • Het is altijd een goede gewoonte om VARCHAR2 te gebruiken in plaats van VARCHAR om gedragsveranderingen te voorkomen.
manager VARCHAR(10) := ‘guru99';

Syntaxis uitleg:

  • De bovenstaande declaratieverklaring verklaarde de variabele 'manager' van het VARCHAR-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval geheugen van slechts 6 bytes toewijzen. (Vergelijkbaar met VARCHAR2)
NCHAR Dit gegevenstype is hetzelfde als het CHAR-gegevenstype, maar de tekenset is de nationale tekenset.

  • Deze tekenset kan voor de sessie worden gedefinieerd met behulp van NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De groottebeperking is 1-2000 bytes.
native NCHAR(10);

Syntaxis uitleg:

  • De bovenstaande declaratie-instructie declareert de variabele 'native' van het gegevenstype NCHAR met een maximale grootte van 10.
  • De lengte van deze variabele hangt af van (het aantal lengtes) per byte zoals gedefinieerd in de tekenset.
NVARCHAR2 Dit gegevenstype is hetzelfde als het gegevenstype VARCHAR2, maar de tekenset zal van de nationale tekenset zijn.

  • Deze tekenset kan voor de sessie worden gedefinieerd met behulp van NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De groottebeperking is 1-4000 bytes.
Native var NVARCHAR2(10):='guru99';

Syntaxis uitleg:

  • De bovenstaande declaratie-instructie declareert de variabele 'Native_var' van het gegevenstype NVARCHAR2 met de maximale grootte van 10.
LANG en LANG Dit gegevenstype wordt gebruikt om grote tekst of onbewerkte gegevens op te slaan tot een maximale grootte van 2 GB.

  • Deze worden voornamelijk gebruikt in de datadictionary.
  • Het gegevenstype LONG wordt gebruikt om tekensetgegevens op te slaan, terwijl LONG RAW wordt gebruikt om gegevens in binair formaat op te slaan.
  • Het gegevenstype LONG RAW accepteert mediaobjecten, afbeeldingen enz., terwijl LONG alleen werkt op gegevens die kunnen worden opgeslagen met behulp van een tekenset.
Large_text LONG;
Large_raw LONG RAW;

Syntaxis uitleg:

  • De bovenstaande declaratie-instructie declareert de variabele 'Large_text' van het gegevenstype LONG en 'Large_raw' van het gegevenstype LONG RAW.

Opmerking: Het gebruik van het gegevenstype LONG wordt niet aanbevolen door Oracle. In plaats daarvan verdient het LOB-gegevenstype de voorkeur.

PL/SQL NUMBER Gegevenstype

Dit gegevenstype slaat vaste of drijvende-kommagetallen op tot 38 cijfers nauwkeurig. Dit gegevenstype wordt gebruikt om te werken met velden die alleen numerieke gegevens bevatten. De variabele kan worden gedeclareerd met precisie en decimale cijferdetails of zonder deze informatie. Waarden hoeven niet tussen aanhalingstekens te staan ​​bij het toewijzen voor dit gegevenstype.

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

Syntaxis uitleg:

  • In het bovenstaande declareert de eerste declaratie dat de variabele 'A' van het gegevenstype numeriek is met een totale precisie van 8 en decimalen van 2.
  • De tweede declaratie geeft aan dat de variabele 'B' van het gegevenstype numeriek is met een totale precisie van 8 en geen decimalen bevat.
  • De derde declaratie is de meest generieke, verklaart variabele 'C' is van het gegevenstype number zonder beperking in precisie of decimalen. Het kan maximaal 38 cijfers bevatten.

PL/SQL BOOLEAN-gegevenstype

Dit gegevenstype slaat de logische waarden op. Oracle Booleaans gegevenstype vertegenwoordigt TRUE of FALSE en wordt voornamelijk gebruikt in voorwaardelijke instructies. Waarden hoeven bij het toewijzen voor dit gegevenstype niet tussen aanhalingstekens te staan.

Var1 BOOLEAN;

Syntaxis uitleg:

  • In het bovenstaande wordt variabele 'Var1' gedeclareerd als BOOLEAN-gegevenstype. De uitvoer van de code is waar of onwaar, afhankelijk van de ingestelde voorwaarde.

PL/SQL DATE-gegevenstype

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

De 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 wordt de variabele 'nieuwjaar' gedeclareerd als DATE-gegevenstype en krijgt de waarde 1 januari toegewezenst, datum 2015.
  • De tweede declaratie declareert de variabele current_date als gegevenstype DATE en wijst de waarde toe met de huidige systeemdatum.
  • Beide variabelen bevatten de tijdinformatie.

PL/SQL LOB-gegevenstype

Dit gegevenstype wordt voornamelijk gebruikt voor het opslaan en manipuleren van grote blokken ongestructureerde gegevens, zoals afbeeldingen, multimediabestanden, enz. Oracle geeft de voorkeur aan LOB in plaats van het gegevenstype LONG, omdat dit flexibeler is dan het gegevenstype LONG. Hieronder vindt u de 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 het aantal kolommen met het gegevenstype LOB.
  • Het gegevensinterfacehulpprogramma 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 staan ​​de verschillende LOB-gegevenstypen. Ze kunnen tot een grootte van 128 terabytes opslaan.

  1. BLOB
  2. CLOB en NCLOB
  3. B-BESTAND
Data type Beschrijving 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 karaktersetdetails, zodat het de ongestructureerde gegevens kan opslaan, zoals multimedia-objecten, afbeeldingen, enz.
Binary_data BLOB;

Syntaxis uitleg:

  • In het bovenstaande wordt variabele 'Binary_data' gedeclareerd als een BLOB.
CLOB en NCLOB Het CLOB-gegevenstype slaat de LOB-gegevens op in de tekenset, terwijl NCLOB de gegevens opslaat in de eigen tekenset. Omdat deze gegevenstypen gebruik maken van op tekensets 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.
B-BESTAND
  • BFILE zijn de gegevenstypen waarmee de ongestructureerde gegevens in binaire indeling buiten de database worden opgeslagen als een besturingssysteembestand.
  • De grootte van BFILE is beperkt tot een beperkt besturingssysteem. Bovendien zijn het alleen-lezenbestanden die niet kunnen worden gewijzigd.

Samenvatting

We hebben de verschillende eenvoudige gegevenstypen besproken die beschikbaar zijn in PL / SQL samen met hun syntaxis. We zullen in verdere onderwerpen meer leren over complexe gegevenstypen.