Oracle Types de données PL/SQL : booléen, nombre, date [exemple]

⚡ Résumé intelligent

Les types de données PL/SQL définissent comment Oracle Chaque valeur d'un bloc est stockée, manipulée et contrainte. Ces valeurs sont regroupées en familles : caractères, nombres, booléens, dates et objets volumineux (LOB), chacune ayant son propre format de stockage, ses limites de taille et ses règles d'affectation.

  • 🔤 Personnage: CHAR est de longueur fixe, VARCHAR2 est de longueur variable, et NCHAR et NVARCHAR2 utilisent le jeu de caractères national.
  • (I.e. Téléphone: NUMBER stocke des valeurs à virgule fixe ou flottante jusqu'à 38 chiffres de précision.
  • ✅ Booléen : Contient la valeur VRAI ou FAUX et est principalement utilisé dans la logique conditionnelle.
  • 📅 Date: Enregistre la date et l'heure, par défaut minuit si aucune heure n'est spécifiée.
  • 🇧🇷 LOB: BLOB, CLOB, NCLOB et BFILE stockent de grandes quantités de données non structurées jusqu'à 128 To.
  • 💡 Meilleure pratique : Privilégiez VARCHAR2 à CHAR et LOB à LONG pour économiser de la mémoire et assurer la pérennité de vos systèmes.
  • 🔗 Portée: Les types SQL s'appliquent aux colonnes des tables ; les types PL/SQL sont utilisés à l'intérieur des blocs PL/SQL.

Oracle Types de données PL/SQL

Que sont les types de données PL/SQL ?

Types de données En PL/SQL, définissez comment les données seront stockées, gérées et traitées par Oracle Lors du stockage et du traitement, les types de données sont associés à un format de stockage spécifique et à des contraintes de plage. OracleChaque valeur ou constante se voit attribuer un type de données.

La principale différence entre PL/SQL et SQL La principale différence réside dans le fait que les types de données SQL sont limités aux colonnes de la table, tandis que les types de données PL/SQL sont utilisés dans les colonnes de la table. Blocs PL/SQL. Nous en parlerons plus tard dans le didacticiel.

Voici un schéma des différents Oracle Types de données PL/SQL :

Différents types de données en PL/SQL
Différents types de données en PL/SQL

CARACTÈRE PL/SQL Type de données

Ce type de données stocke des caractères alphanumériques sous forme de chaîne de caractères. Les valeurs littérales doivent toujours être placées entre guillemets simples lors de leur affectation à un type de données CHARACTER.

Ce type de données de caractère est en outre classé comme suit :

  • Type de données CHAR (taille de chaîne fixe)
  • Type de données VARCHAR2 (taille de chaîne variable)
  • type de données VARCHAR
  • NCHAR (taille de chaîne fixe native)
  • NVARCHAR2 (taille de chaîne variable native)
  • LONG et LONG BRUT
Type de données Description Syntaxe
CARBONISER Ce type de données stocke une valeur de type chaîne de caractères, dont la taille est fixée lors de sa déclaration. variable.

  • Oracle ajoute des espaces vides à la variable si elle n'occupe pas la totalité de la taille déclarée. Oracle alloue la mémoire pour la taille déclarée même si la variable ne la remplit pas.
  • La restriction de taille est de 1 à 2000 octets.
  • CHAR est plus approprié lorsqu'il s'agit de traiter des données de taille fixe.
grade CHAR;
manager CHAR (10):= 'guru99';

Explication de la syntaxe :

  • La première instruction déclare la variable 'grade' de type de données CHAR avec une taille maximale de 1 octet (valeur par défaut).
  • La deuxième instruction déclare la variable 'manager' de type de données CHAR avec une taille maximale de 10 et lui attribue la valeur 'guru99', qui est de 6 octets. Oracle alloue 10 octets au lieu de 6 dans ce cas.
VARCHAR2 Ce type de données stocke une chaîne de caractères, mais sa longueur n'est pas fixe.

  • La taille limite est de 1 à 4000 octets pour une colonne de table et de 1 à 32767 octets pour une variable.
  • La taille de chaque variable est définie lors de sa déclaration.
  • Oracle L'allocation de mémoire n'intervient qu'après la définition de la variable ; elle utilise donc la longueur réelle de la chaîne stockée plutôt que la taille déclarée.
  • Il est toujours préférable d'utiliser VARCHAR2 plutôt que CHAR pour optimiser l'utilisation de la mémoire.
manager VARCHAR2(10) := 'guru99';

Explication de la syntaxe :

  • L'instruction déclare la variable 'manager' de type de données VARCHAR2 avec une taille maximale de 10 et lui attribue la valeur 'guru99', qui est de 6 octets. Oracle alloue ici seulement 6 octets de mémoire.
VARCHAR Ceci est synonyme du type de données VARCHAR2.

  • Il est toujours recommandé d'utiliser VARCHAR2 plutôt que VARCHAR afin d'éviter les changements de comportement.
manager VARCHAR(10) := 'guru99';

Explication de la syntaxe :

  • L'instruction déclare la variable 'manager' de type de données VARCHAR avec une taille maximale de 10 et lui assigne la valeur 'guru99', 6 octets. Oracle alloue seulement 6 octets, comme VARCHAR2.
NCHAR Ce type de données est identique à CHAR, mais le jeu de caractères est le jeu de caractères national.

  • Ce jeu de caractères peut être défini pour la session à l'aide de NLS_PARAMETERS.
  • Le jeu de caractères peut être UTF16 ou UTF8.
  • La restriction de taille est de 1 à 2000 octets.
native NCHAR(10);

Explication de la syntaxe :

  • Cette instruction déclare la variable « native » de type de données NCHAR avec une taille maximale de 10.
  • La longueur dépend du nombre d'octets par caractère défini dans le jeu de caractères.
NVARCHAR2 Ce type de données est identique à VARCHAR2, mais le jeu de caractères est le jeu de caractères national.

  • Ce jeu de caractères peut être défini pour la session à l'aide de NLS_PARAMETERS.
  • Le jeu de caractères peut être UTF16 ou UTF8.
  • La restriction de taille est de 1 à 4000 octets.
Native_var NVARCHAR2(10):= 'guru99';

Explication de la syntaxe :

  • Cette instruction déclare la variable 'Native_var' de type de données NVARCHAR2 avec une taille maximale de 10.
LONG et LONG BRUT Ce type de données stocke des textes volumineux ou des données brutes jusqu'à une taille maximale de 2 Go.

  • Ceux-ci sont principalement utilisés dans le dictionnaire de données.
  • LONG stocke les données de jeu de caractères, tandis que LONG RAW stocke les données au format binaire.
  • LONG RAW accepte les objets multimédias et les images, tandis que LONG ne fonctionne qu'avec des données pouvant être stockées à l'aide d'un jeu de caractères.
Large_text LONG;
Large_raw LONG RAW;

Explication de la syntaxe :

  • Cette déclaration indique que 'Large_text' est de type de données LONG et 'Large_raw' de type de données LONG RAW.

À noter: L'utilisation du type de données LONG n'est pas recommandée par OracleLe type de données LOB est à privilégier.

PL/SQL NUMÉRO Type de données

Ce type de données stocke des nombres à virgule fixe ou flottante avec une précision maximale de 38 chiffres. Il est utilisé pour manipuler des champs contenant uniquement des données numériques. La variable peut être déclarée avec ou sans précision et nombre de décimales. Il n'est pas nécessaire d'encadrer les valeurs entre guillemets lors de leur affectation.

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

Explication de la syntaxe :

  • La première déclaration déclare la variable 'A' de type de données numériques avec une précision totale de 8 et 2 chiffres décimaux.
  • La seconde déclaration indique « B » de type de données numériques avec une précision totale de 8 et sans décimales.
  • La troisième option est la plus générique ; elle déclare le type de données numériques « C » sans restriction de précision ni de décimales. Elle peut comporter jusqu’à 38 chiffres.

Type de données PL/SQL BOOLÉEN

Ce type de données stocke des valeurs logiques. Oracle Le type de données booléen représente soit VRAI, soit FAUX et est principalement utilisé dans les instructions conditionnelles. Il n'est pas nécessaire d'encadrer les valeurs de guillemets lors de leur affectation.

Var1 BOOLEAN;

Explication de la syntaxe :

  • La variable « Var1 » est déclarée comme étant de type booléen. La valeur de retour sera soit vraie, soit fausse, selon la condition définie.

Type de données PL/SQL DATE

Ce type de données stocke les valeurs au format date (jour, mois, année). Lorsqu'une variable est définie avec le type DATE, elle peut contenir une information temporelle ; par défaut, l'heure est fixée à 12:00:00 si elle n'est pas spécifiée. Les valeurs doivent être placées entre guillemets lors de leur affectation.

La norme Oracle Le format de temps pour l'entrée et la sortie est 'JJ-MOIS-AA', qui est défini dans NLS_PARAMETERS (NLS_DATE_FORMAT) au niveau de la session.

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

Explication de la syntaxe :

  • La variable « newyear » est déclarée comme étant de type DATE et se voit attribuer la valeur du 1er janvier 2015.
  • La deuxième déclaration indique que 'current_date' est de type DATE et lui attribue la date système actuelle.
  • Les deux variables contiennent des informations temporelles.

Type de données PL/SQL LOB

Ce type de données est principalement utilisé pour stocker et manipuler de grands blocs de données non structurées telles que des images et des fichiers multimédias. Oracle LOB est préféré au type de données LONG car il est plus flexible. Les principaux avantages de LOB par rapport à LONG sont les suivants :

  • Une table est limitée à une seule colonne LONG, alors qu'il n'y a aucune restriction quant au nombre de colonnes LOB.
  • Les outils d'interface de données acceptent les colonnes LOB lors de la réplication, mais omettent les colonnes LONG, qui doivent être répliquées manuellement.
  • Une colonne LONG peut stocker jusqu'à 2 Go, tandis qu'une colonne LOB peut stocker jusqu'à 128 To.
  • Oracle Le type de données LOB continue de s'améliorer à chaque version, tandis que le type LONG reste en grande partie inchangé.

Il est donc toujours préférable d'utiliser le type de données LOB plutôt que LONG. Les différents types de données LOB ci-dessous peuvent stocker jusqu'à 128 téraoctets :

  1. BLOB
  2. CLOB et NCLOB
  3. FICHIER BF
Type de données Description Syntaxe
BLOB Ce type de données stocke les données LOB au format binaire jusqu'à une taille maximale de 128 To. Il ne stocke pas les données en fonction des jeux de caractères, ce qui lui permet de stocker des données non structurées telles que des objets multimédias et des images.
Binary_data BLOB;

Explication de la syntaxe :

  • La variable 'Binary_data' est déclarée comme un BLOB.
CLOB et NCLOB Le format CLOB stocke les données LOB dans le jeu de caractères, tandis que le format NCLOB les stocke dans le jeu de caractères natif. Comme ces formats utilisent un stockage basé sur le jeu de caractères, ils ne peuvent pas stocker de données multimédias ou d'images. La capacité maximale est de 128 To.
Charac_data CLOB;

Explication de la syntaxe :

  • La variable 'Charac_data' est déclarée comme étant de type CLOB.
FICHIER BF
  • BFILE stocke les données binaires non structurées en dehors de la base de données, sous forme de fichier système.
  • La taille d'un fichier BFILE est limitée par le système d'exploitation, et ces fichiers sont en lecture seule et ne peuvent pas être modifiés.

FAQ

CHAR est de longueur fixe et complète la taille déclarée avec des espaces, ce qui gaspille de l'espace pour les valeurs courtes. VARCHAR2 est de longueur variable et ne stocke que les caractères réels ; il est donc préférable pour la plupart des colonnes de chaînes de caractères.

Le format LOB autorise de nombreuses colonnes par table, stocke jusqu'à 128 To et bénéficie d'améliorations constantes. Le format LONG, quant à lui, est limité à une seule colonne, à 2 Go et est conservé principalement pour assurer la compatibilité avec les versions précédentes.

Non présent dans les versions antérieures. Le type BOOLEAN étant exclusif à PL/SQL, les colonnes de table utilisaient un indicateur NUMBER ou CHAR. Il est utilisé directement dans les blocs pour la logique conditionnelle.

Oui. En analysant la longueur, la plage et le format des valeurs d'échantillon, l'IA peut suggérer les types VARCHAR2, NUMBER, DATE ou LOB, et signaler les colonnes trop volumineuses. Confirmez ce choix avec des données ultérieures.

Oui. Le type DATE enregistre le siècle, l'année, le mois, le jour, l'heure, la minute et la seconde. Si aucune heure n'est spécifiée, la valeur par défaut est minuit. Pour les fractions de seconde ou les fuseaux horaires, utilisez plutôt TIMESTAMP.

Résumez cet article avec :