Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment créer des tableaux associatifs dans Oracle Database

Le tableau associatif est anciennement connu sous le nom de tables PL/SQL dans PL/SQL 2 (version PL/SQL fournie avec Oracle 7) et Index-by-Table dans la base de données Oracle 8. Après Nested Table et VARRAYs, Associative Array est le troisième type de collection largement utilisé par les développeurs.

Découvrons les réponses à quelques questions sur les tableaux associatifs qui vous aideraient à mieux les comprendre. Dans cette section, vous découvrirez également certaines des principales différences et similitudes entre le tableau associatif et d'autres collections telles que VARRAY et les tables imbriquées.

Les tableaux associatifs sont-ils limités ou non ?

Semblables aux tableaux imbriqués, Les tableaux associatifs sont une forme de collection illimitée. Cela signifie qu'il n'y a pas de limite supérieure sur le nombre d'éléments qu'il peut contenir. Il n'en va pas de même pour les VARRAY car les tableaux de variables sont limités par nature.

Les tableaux associatifs sont-ils persistants ou non ?

Contrairement aux tables imbriquées et aux VARRAY, Les tableaux associatifs sont une forme de collection non persistante . Cela signifie que ni le tableau ni les données ne peuvent être stockés dans la base de données, mais qu'ils ne sont disponibles que dans des blocs PL/SQL.

Les tableaux associatifs sont-ils clairsemés ou denses ?

Alors que les VARRAY sont des tableaux densément peuplés, Les tableaux imbriqués et les tableaux associatifs sont des tableaux peu peuplés ce qui signifie que la numérotation en indice doit être unique mais pas nécessairement séquentielle.

Pouvons-nous créer un tableau associatif en tant qu'objet de base de données ?

En raison de leur nature non persistante, les tableaux associatifs ne peuvent pas être stockés dans le schéma. Ils ne peuvent être créés que dans des blocs PL/SQL, mais pas au niveau du schéma en tant qu'objet de base de données.

Pouvons-nous réutiliser un tableau associatif ?

Comme mentionné ci-dessus, le tableau associatif est une collection non persistante qui ne peut pas être créée au niveau du schéma, il ne peut donc pas être stocké dans le schéma et ne peut donc pas être réutilisé.

La numérotation d'index/indice dans le tableau associatif est-elle implicite ou explicite ?

Contrairement aux tables imbriquées et aux VARRAY, l'indexation dans un tableau associatif est explicite. Là où Oracle Engine attribue un indice/numéro d'index aux éléments de la table imbriquée et des collections VARRAY implicitement en arrière-plan, dans les tableaux associatifs, les utilisateurs doivent spécifier explicitement le numéro d'index lors du remplissage de la collection.

Comment les données sont-elles stockées dans le tableau associatif ?

Le tableau associatif stocke les données dans des paires clé-valeur où le numéro d'index sert de clé et les données stockées dans la cellule servent de valeur.

Voici quelques questions fondamentales auxquelles vous pouvez vous attendre lors de votre examen ou de votre entretien. Lisez la suite pour découvrir les différences techniques entre les tableaux associatifs et les autres collections.

Définir la collection PL/SQL – Tableau associatif ?
En utilisant les informations dérivées des questions ci-dessus, nous pouvons définir les tableaux associatifs comme une collection homogène unidimensionnelle qui stocke les données dans une paire clé-valeur. Il est clairsemé, illimité et non persistant dans la nature.

Quelle est la syntaxe du tableau associatif PL/SQL ?

TYPE aArray_name IS TABLE OF element_datatype [Not Null]
INDEX BY index_elements_datatype;

Comme indiqué ci-dessus, le tableau associatif est un type de collection non persistant, il ne peut donc pas être créé en tant qu'objet de base de données autonome et ne peut donc pas être réutilisé comme le reste des autres collections. Il ne peut être disponible qu'en bloc PL/SQL. Assurez-vous toujours de créer votre tableau associatif dans la section DELCARATION de votre bloc PL/SQL. [Lire ici pour savoir combien de sections y a-t-il dans le bloc PL/SQL ?] Voyons la syntaxe en détail :

Tapez :Le mot-clé marque le début de l'instruction.

aArray_name :Nom du tableau associatif. Il est entièrement défini par l'utilisateur et conforme aux normes de dénomination de la base de données Oracle.

EST TABLE DE :Phrase réservée Oracle Database en utilisant quel utilisateur indique au compilateur quel type d'éléments le tableau va contenir ?

Element_Datatype :Type de données des éléments que le tableau va contenir. Dans Oracle Database, toutes les collections sont de nature homogène, ce qui signifie que chaque élément de la collection doit être du même type de données.

Non_null  :Une clause facultative qui, si elle est utilisée, garantit que chaque index a une valeur qui lui correspond plutôt qu'un NULL.

INDEXER PAR :Clause à l'aide de laquelle l'utilisateur spécifie le type de données de l'indice du tableau.

Index_elements_dataype :Type de données des éléments en indice du tableau.

Exemple :comment créer un tableau associatif dans Oracle Database ?

Un tableau associatif ne peut être créé qu'à l'intérieur d'un bloc PL/SQL, sa portée est donc limitée au bloc dans lequel il est créé, ce qui signifie qu'il ne peut pas être utilisé en dehors de ce bloc. Voyons comment créer un tableau associatif dans Oracle Database ?

Étape 1 :Créer un tableau associatif

	SET SERVEROUTPUT ON;
	DECLARE
	    TYPE books IS TABLE OF NUMBER
	        INDEX BY VARCHAR2 (20);

Dans le code ci-dessus, nous avons créé un tableau associatif avec le nom "Livres ' qui peut contenir des éléments de NUMBER types de données et un indice du type de données VARCHAR2.

Étape 2 :Créer une variable de tableau associatif

Isbn Books;

Vous avez besoin d'une variable de tableau associatif pour référencer le tableau dans le programme. La variable de tableau peut être créée très facilement. Il vous suffit d'écrire le nom de la variable (qui est 'isbn' dans notre cas) qui est défini par l'utilisateur suivi du nom du tableau associatif.

Étape 3 :Insérer des données dans le tableau associatif

Comme mentionné ci-dessus, le tableau associatif contient des données dans des paires clé-valeur. Ainsi, contrairement au reste des autres collections, les utilisateurs doivent insérer à la fois l'indice du tableau (la clé) et les données.

BEGIN
-- How to insert data into the associative array 
isbn('Oracle Database') := 1234;
isbn('MySQL') := 9876; 

Comme la table imbriquée et les VARRAY, nous insérons des données dans le tableau associatif de la section d'exécution du bloc PL/SQL. Si vous avez remarqué ici, contrairement à d'autres collections, nous n'avons pas utilisé l'instruction INSERT DML pour insérer les données, nous les avons plutôt insérées à l'aide de la variable Array 'isbn' . Ci-dessous, vous pouvez voir la syntaxe de l'instruction d'insertion pour un tableau associatif à l'aide d'une variable de tableau.

Array_variable (subscript/key) := data; 

Comme vous pouvez le voir, pour insérer les données dans le tableau associatif, vous devez d'abord écrire le nom de la variable de tableau suivi de l'indice du tableau, puis des données de votre tableau.

Etape 4 :Comment mettre à jour les données de collection – Tableau associatif ?

La mise à jour des valeurs du tableau associatif est aussi simple que de les insérer. Si vous souhaitez modifier une valeur, écrivez la même instruction que celle utilisée pour l'insertion avec les valeurs modifiées. Par exemple, disons que vous voulez changer la valeur par rapport à la clé MySQL de 9876 à 1010, puis vous écrivez simplement

	-- How to update data of associative array.	
	 	isbn('MySQL') := 1010; 

Encore une fois, vous n'avez pas besoin d'écrire le UPDATE DML pour mettre à jour les valeurs. Vous utilisez simplement la variable tableau.

Étape 5 :Comment récupérer les données du tableau Collection-Associative ?

Tout comme nous n'avons pas besoin de l'instruction Insert DML pour insérer des valeurs ou de Update DML pour mettre à jour les valeurs, nous n'avons pas besoin de Select DML pour récupérer les valeurs.

Supposons que vous souhaitiez voir la valeur stockée par rapport à la clé "Oracle Database". Pour cela il vous suffit d'écrire…

-- how to retrieve data using key from associative array.  	
	  DBMS_OUTPUT.PUT_LINE ('Value '||isbn ('Oracle Database'));

Combinons tous ces morceaux de code en un seul programme.

SET SERVEROUTPUT ON;
DECLARE
    TYPE books IS TABLE OF NUMBER
        INDEX BY VARCHAR2(20);
    isbn Books;
BEGIN
    	-- How to insert data into the associative array 
    	isbn('Oracle Database') := 1234;
    	isbn('MySQL') := 9876;
    	DBMS_OUTPUT.PUT_LINE('Value Before Updation '||isbn('MySQL'));

    	-- How to update data of associative array.
    	isbn('MySQL') := 1010;
    
-- how to retrieve data using key from associative array.  
    	DBMS_OUTPUT.PUT_LINE('Value After Updation '||isbn('MySQL'));
END;
/

Voici le programme avec quelques modifications infimes. Le programme PL/SQL ci-dessus montre comment récupérer une valeur spécifique à l'aide de la clé. Vous pouvez regarder le didacticiel vidéo pour apprendre à récupérer toutes les valeurs du tableau associatif à l'aide de boucles. Là, je l'ai expliqué en détail.

Avant de conclure ce didacticiel, il y a quelques pointeurs que je pense que vous devriez connaître. Ces pointeurs sont -

  • PL/SQL Associative Array prend en charge BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL, SIGNTYPE ou VARCHAR2 comme type de données d'index.
  • RAW, NUMBER, LONG-ROW, ROWID et CHAR sont des types de données d'index non pris en charge.

En cas de type de données d'élément, la collection PL/SQL Associative Array prend en charge –

  • Type de données scalaire PL/SQL :DATE, BLOB, CLOB, BOOLEAN ou NUMBER &VARCHAR2 avec leurs sous-types.
  • Données déduites :Terme utilisé pour les types de données hérités d'une colonne de table, d'une expression de curseur ou d'une variable de package prédéfinie
  • Type défini par l'utilisateur : Un type d'objet ou un type de collection défini par l'utilisateur.

C'est un tutoriel détaillé sur PL/SQL Collection - Associative Array. Ce didacticiel couvre tous les sujets auxquels vous pouvez vous attendre dans l'examen de certification de base de données Oracle ainsi que dans l'entretien. J'espère que vous avez apprécié la lecture.

Vous pouvez aider les autres à apprendre quelque chose de nouveau et nous aider à toucher plus de personnes en partageant ce blog sur vos réseaux sociaux. N'oubliez pas de nous taguer car nous aimons donner des cris forts à tous nos supporters, téléspectateurs et abonnés. Merci et bonne journée !