Oracle 23c new features: BOOLEAN datatypes.

Oracle 23c: BOOLEAN datatypes.

Nu Oracle steeds meer informatie vrijgeeft over de nieuwe 23c release van de database, is het goed eens te kijken wat er op ons afkomt. Deze release bevat een aantal leuke wijzigingen om over door te bomen. Een van de wijzigingen is de introductie van het SQL datatype BOOLEAN.  Waar Oracle  bij monde van AskTom  in 2002 nog beargumenteerde dat het ontbreken van boolean geen beperking is, introduceert zij in 23c toch dit datatype. Om aan te geven waarom  de introductie van een Boolean datatype nuttig is  hoef je alleen maar naar DBA_TABLES te kijken. Alleen al hier zien we YES|NO, Y|N ENABLED|DISABLED als codering langs komen. Maar verder in de database zien we ook ‘TRUE’|’FALSE”, 0|1  in de database langs komen. 

LOGGING  		VARCHAR2(3)  	(YES | NO)
BACKED_UP 		VARCHAR2(1)	(Y | N)
CACHE	 		VARCHAR2(5)  	(Y | N)
PARTITIONED 		VARCHAR2(3) 	(YES | NO)
TEMPORARY 		VARCHAR2(1) 	(Y | N)
SECONDARY 		VARCHAR2(1) 	(Y | N)
NESTED 			VARCHAR2(3) 	(YES | NO)
ROW_MOVEMENT 		VARCHAR2(8) 	(ENABLED |DISABLED)
GLOBAL_STATS 		VARCHAR2(3) 	(YES | NO)
USER_STATS 		VARCHAR2(3)	(YES | NO)
SKIP_CORRUPT 		VARCHAR2(8) 	(ENABLED |DISABLED)
DEPENDENCIES 		VARCHAR2(8) 	(ENABLED |DISABLED)
COMPRESSION  		VARCHAR2(8) 	(ENABLED |DISABLED)
DROPPED 		VARCHAR2(3)	(YES | NO)
READ_ONLY 		VARCHAR2(3)  	(YES | NO |N/A)
SEGMENT_CREATED 	VARCHAR2(3)  	(YES | NO |N/A)
CLUSTERING 		VARCHAR2(3)  	(YES | NO)
HAS_IDENTITY 		VARCHAR2(3)	(YES | NO)
CONTAINER_DATA		VARCHAR2(3) 	(YES | NO)	
INMEMORY 		VARCHAR2(8)  	(ENABLED |DISABLED)
DUPLICATED 		VARCHAR2(1) 	(Y | N)
SHARDED 		VARCHAR2(1) 	(Y | N)
EXTERNAL 		VARCHAR2(3)	(YES | NO)
HYBRID 			VARCHAR2(3)	(YES | NO)
CONTAINERS_DEFAULT 	VARCHAR2(3)	(YES | NO)
CONTAINER_MAP 		VARCHAR2(3) 	(YES | NO)
EXTENDED_DATA_LINK 	VARCHAR2(3)	(YES | NO)
CONTAINER_MAP_OBJECT	VARCHAR2(3)	(YES | NO)
MEMOPTIMIZE_READ 	VARCHAR2(8)	(ENABLED |DISABLED)
HAS_SENSITIVE_COLUMN 	VARCHAR2(3)	(YES | NO)
ADMIT_NULL		VARCHAR2(3)	(YES | NO)
DATA_LINK_DML_ENABLED 	VARCHAR2(3)	(YES | NO)
LOGICAL_REPLICATIONF 	VARCHAR2(8)	(ENABLED |DISABLED)

Met de introductie  van het BOOLEAN type is er de mogelijkheid tot een strong typed alternatief. En misschien nog belangrijker er is een mogelijkheid zonder vertaling data uit te wisselen met andere, niet Oracle databases die het BOOLEAN dat type al jaren kende. We kunnen nu een table  creëren:

SQL> create table test (id  number,  col boolean);

SQL> desc test
Name Null? Type    
---- ----- ------- 
ID         NUMBER  
COL        BOOLEAN

SQL> insert into test values (1, true), (2, false);

SQL> commit;

We zien hier tussendoor meteen een andere syntactische wijziging. Het ‘insert … values (..)’ statement accepteert meerdere rijen in een enkele insert.  En keurig zien we w waarden TRUE en FALSE als de BOOLEAN waarden terug komen. Als we een oudere client gebruiken (bijvoorbeeld een minder actuele SQLDeveloper versie) dan zien we:

SQL> select * from test;
        ID COL
---------- -----------
         1 1
         2 0


Hieruit blijkt dat de oudere clients dit datatype nog iet herkennen. Als we met een SQL commando en de  dump functie proberen terug te halen wat er opgeslagen wordt:

SQL> select id,  dump(col)  from test;

        ID  DUMP(COL)
----------  ------------------
         1  Typ=252 Len=1: 1
         2  Typ=252 Len=1: 0

Hieruit blijkt dat het BOOLEAN  datatype als een enkele byte wordt opgeslagen

We hopen dat we je met dit artikel, “Oracle 23c, BOOLEAN datatypes”, op weg bent geholpen. Mocht je hulp nodig hebben of je hebt vragen n.a.v. dit artikel, laat het ons dan weten. Wil je een cursus of training volgen Oracle 23c new features? Laat het ons weten, we helpen je graag.

Scroll to Top