Oracle PL/SQL-datatyper: Boolean, Antal, Datum [Exempel]

Vad är PL/SQL-datatyper?

Datatyper i PL/SQL används för att definiera hur data ska lagras, hanteras och behandlas av Oracle under datalagring och bearbetning. Datatyper är associerade med det specifika lagringsformatet och intervallbegränsningarna. I Oracle, varje värde eller konstant tilldelas en datatyp.

Den största skillnaden mellan PL/SQL och SQL datatyper är, SQL-datatyp är begränsad till tabellkolumnen medan PL/SQL-datatyperna används i PL/SQL-block. Mer om detta senare i handledningen.

Följande är diagrammet över olika Oracle PL/SQL-datatyper:

PL/SQL-datatyper
Olika datatyper i PL/SQL

PL/SQL KARAKTER Datatyp

Denna datatyp lagrar i princip alfanumeriska tecken i strängformat.

De bokstavliga värdena ska alltid omges av enkla citattecken samtidigt som de tilldelas till CHARACTER-datatypen.

Denna karaktärsdatatyp klassificeras ytterligare enligt följande:

  • CHAR Datatyp (fast strängstorlek)
  • VARCHAR2 Datatyp (variabel strängstorlek)
  • VARCHAR Datatyp
  • NCHAR (inbyggd fast strängstorlek)
  • NVARCHAR2 (inbyggd variabel strängstorlek)
  • LÅNGT och LÅNGT RÅT
Data typ Description syntax
RÖDING Denna datatyp lagrar strängvärdet och storleken på strängen är fast vid tidpunkten för deklarationen av variabel.

  • Oracle skulle vara tom-paddad variabeln om variabeln inte upptar hela storleken som har deklarerats för den, därför Oracle kommer att allokera minnet för den deklarerade storleken även om variabeln inte ockuperade det fullt ut.
  • Storleksbegränsningen för denna datatyp är 1-2000 byte.
  • CHAR-datatypen är mer lämplig att använda där det än är fast storleken på data kommer att hanteras.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxförklaring:

  • Den första deklarationssatsen deklarerade variabeln "grade" av CHAR-datatypen med den maximala storleken på 1 byte (standardvärde).
  • Den andra deklarationssatsen deklarerade variabeln 'manager' av CHAR-datatypen med den maximala storleken 10 och tilldelade värdet 'guru99' som är på 6 byte. Oracle kommer att allokera minnet på 10 byte istället för 6 byte i detta fall.
VARCHAR2 Denna datatyp lagrar strängen, men längden på strängen är inte fast.

  • Storleksbegränsningen för denna datatyp är 1-4000 byte för tabellkolumnstorlek och 1-32767 byte för variabler.
  • Storleken definieras för varje variabel vid tidpunkten för variabeldeklarationen.
  • Men Oracle kommer att allokera minne först efter att variabeln har definierats, dvs. Oracle tar endast hänsyn till den faktiska längden på strängen som är lagrad i en variabel för minnesallokering snarare än storleken som har angetts för en variabel i deklarationsdelen.
  • Det är alltid bra att använda VARCHAR2 istället för CHAR datatyp för att optimera minnesanvändningen.
manager VARCHAR2(10) := ‘guru99';

Syntaxförklaring:

  • Ovanstående deklarationssats deklarerade variabeln 'manager' för datatypen VARCHAR2 med den maximala storleken 10 och tilldelade värdet 'guru99' som är på 6 byte. Oracle kommer att tilldela minne på endast 6 byte i detta fall.
VARCHAR Detta är synonymt med datatypen VARCHAR2.

  • Det är alltid bra att använda VARCHAR2 istället för VARCHAR för att undvika beteendeförändringar.
manager VARCHAR(10) := ‘guru99';

Syntaxförklaring:

  • Ovanstående deklarationssats deklarerade variabeln 'manager' av VARCHAR-datatypen med maximal storlek på 10 och tilldelade värdet 'guru99' som är på 6 byte. Oracle kommer att tilldela minne på endast 6 byte i detta fall. (Liknande VARCHAR2)
NCHAR Denna datatyp är samma som CHAR-datatypen, men teckenuppsättningen kommer att vara den nationella teckenuppsättningen.

  • Denna teckenuppsättning kan definieras för sessionen med NLS_PARAMETERS.
  • Teckenuppsättningen kan vara antingen UTF16 eller UTF8.
  • Storleksbegränsningen är 1-2000 byte.
native NCHAR(10);

Syntaxförklaring:

  • Ovanstående deklarationssats deklarerar variabeln "native" för NCHAR-datatypen med den maximala storleken 10.
  • Längden på denna variabel beror på (antal längder) per byte som definierats i teckenuppsättningen.
NVARCHAR2 Denna datatyp är samma som VARCHAR2-datatypen, men teckenuppsättningen kommer att vara av den nationella teckenuppsättningen.

  • Denna teckenuppsättning kan definieras för sessionen med NLS_PARAMETERS.
  • Teckenuppsättningen kan vara antingen UTF16 eller UTF8.
  • Storleksbegränsningen är 1-4000 byte.
Native var NVARCHAR2(10):='guru99';

Syntaxförklaring:

  • Ovanstående deklarationssats deklarerar variabeln 'Native_var' av datatypen NVARCHAR2 med den maximala storleken 10.
LÅNGT och LÅNGT Denna datatyp används för att lagra stor text eller rådata upp till en maximal storlek på 2 GB.

  • Dessa används främst i dataordboken.
  • LONG datatyp används för att lagra teckenuppsättningsdata, medan LONG RAW används för att lagra data i binärt format.
  • LONG RAW-datatypen accepterar mediaobjekt, bilder etc. medan LONG endast fungerar på data som kan lagras med hjälp av teckenuppsättning.
Large_text LONG;
Large_raw LONG RAW;

Syntaxförklaring:

  • Ovanstående deklarationssats deklarerar variabeln 'Large_text' av LONG-datatypen och 'Large_raw' av LONG RAW-datatypen.

Obs: Att använda LONG datatyp rekommenderas inte av Oracle. Istället bör LOB-datatyp föredras.

PL/SQL NUMMER Datatyp

Denna datatyp lagrar nummer med fast eller flyttal upp till 38 siffror med precision. Denna datatyp används för att arbeta med fält som endast kommer att innehålla nummerdata. Variabeln kan deklareras antingen med precision och decimalsiffror eller utan denna information. Värden behöver inte omslutas inom citattecken vid tilldelning för denna datatyp.

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

Syntaxförklaring:

  • I ovanstående deklarerar den första deklarationen att variabeln 'A' är av nummerdatatyp med total precision 8 och decimalsiffror 2.
  • Den andra deklarationen deklarerar att variabeln 'B' är av nummerdatatyp med total precision 8 och inga decimalsiffror.
  • Den tredje deklarationen är den mest generiska, deklarerar att variabeln 'C' är av nummerdatatyp utan begränsningar i precision eller decimaler. Det kan ta upp till högst 38 siffror.

PL/SQL BOOLEAN Datatyp

Denna datatyp lagrar de logiska värdena. Oracle Boolean Data Type representerar antingen TRUE eller FALSE och används huvudsakligen i villkorliga uttalanden. Värden behöver inte omslutas inom citattecken vid tilldelning för denna datatyp.

Var1 BOOLEAN;

Syntaxförklaring:

  • I ovanstående deklareras variabeln 'Var1' som BOOLEAN datatyp. Utdata från koden kommer att vara antingen sant eller falskt baserat på villkorsuppsättningen.

PL/SQL DATUM Datatyp

Denna datatyp lagrar värdena i datumformat, som datum, månad och år. Närhelst en variabel definieras med datatypen DATE tillsammans med datumet kan den innehålla tidsinformation och som standard är tidsinformationen inställd på 12:00:00 om den inte anges. Värden måste omslutas inom citattecken vid tilldelning för denna datatyp.

Standarden Oracle tidsformatet för inmatning och utdata är 'DD-MON-YY' och det är återigen satt till NLS_PARAMETERS (NLS_DATE_FORMAT) på sessionsnivå.

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

Syntaxförklaring:

  • I ovanstående deklareras variabeln "nyår" som datatyp DATE och tilldelas värdet 1 januarist, 2015 datum.
  • Den andra deklarationen deklarerar variabeln aktuell_datum som datatyp DATUM och tilldelas värdet med aktuellt systemdatum.
  • Båda dessa variabler håller tidsinformationen.

PL/SQL LOB-datatyp

Denna datatyp används huvudsakligen för att lagra och manipulera stora block av ostrukturerade data som bilder, multimediafiler, etc. Oracle föredrar LOB istället för en LONG datatyp eftersom den är mer flexibel än LONG datatypen. Nedan är några av de viktigaste fördelarna med LOB framför LONG datatyp.

  • Antalet kolumner i en tabell med LONG-datatyp är begränsat till 1, medan en tabell inte har några begränsningar för ett antal kolumner med LOB-datatyp.
  • Datagränssnittsverktyget accepterar LOB-datatypen för tabellen under datareplikering, men det utelämnar LONG-kolumnen i tabellen. Dessa LÅNGA kolumner måste replikeras manuellt.
  • Storleken på LONG-kolumnen är 2GB, medan LOB kan lagra upp till 128 TB.
  • Oracle förbättrar ständigt LOB-datatypen i var och en av deras utgåvor enligt det moderna kravet, medan LONG-datatypen är konstant och får inte många uppdateringar.

Så det är alltid bra att använda LOB-datatypen istället för LONG-datatypen. Följande är de olika LOB-datatyperna. De kan lagra upp till storleken 128 terabyte.

  1. KLICK
  2. CLOB och NCLOB
  3. BFIL
Data typ Description syntax
KLICK Denna datatyp lagrar LOB-data i det binära filformatet upp till den maximala storleken på 128 TB. Detta lagrar inte data baserat på teckenuppsättningsdetaljerna, så att det kan lagra ostrukturerad data som multimediaobjekt, bilder etc.
Binary_data BLOB;

Syntaxförklaring:

  • I ovanstående deklareras variabeln 'Binary_data' som en BLOB.
CLOB och NCLOB CLOB-datatypen lagrar LOB-data i teckenuppsättningen, medan NCLOB lagrar data i den ursprungliga teckenuppsättningen. Eftersom dessa datatyper använder teckenuppsättningsbaserad lagring, kan dessa inte lagra data som multimedia, bilder etc. som inte kan läggas in i en teckensträng. Den maximala storleken på dessa datatyper är 128 TB.
Charac_data CLOB;

Syntaxförklaring:

  • I ovanstående deklareras variabeln 'Charac_data' som CLOB-datatyp.
BFIL
  • BFILE är de datatyper som lagrade ostrukturerade binära formatdata utanför databasen som en operativsystemfil.
  • Storleken på BFILE är till ett begränsat operativsystem, och de är skrivskyddade filer och kan inte ändras.

Sammanfattning

Vi har täckt de olika enkla datatyperna som finns tillgängliga i PL / SQL tillsammans med deras syntax. Vi kommer att lära oss om komplexa datatyper i ytterligare ämnen.

Dagligt Guru99-nyhetsbrev

Kickstarta dagen med de senaste och viktigaste AI-nyheterna som levereras just nu.