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

Comment créer des VARRAY en tant qu'objet de base de données dans Oracle Database

La portée du VARRAY qui est créé en tant que membre de bloc PL/SQL est limitée au bloc dans lequel il est créé, cela signifie que nous ne pouvons pas utiliser ce VARRAY en dehors de son bloc ou même le réutiliser et c'est son plus gros inconvénient. Alors allez-y et lisez la suite pour savoir comment nous pouvons surmonter cet inconvénient de VARRAY.

Cet inconvénient peut facilement être surmonté si nous pouvons trouver un moyen de créer le VARRAY en dehors du bloc PL/SQL et de le stocker de manière permanente dans le schéma. Heureusement, nous pouvons atteindre les deux objectifs en créant le VARRAY en tant qu'objet de base de données. C'est exactement ce que nous allons apprendre dans ce tutoriel.

Dans ce tutoriel, nous allons apprendre -

  • Comment créer VARRAY en tant qu'objet de base de données.
  • Comment utiliser ce varray.
  • Comment insérer des données dans le VARRAY.
  • Comment récupérer des données dans (depuis) ​​le VARRAY
  • Comment mettre à jour les données du VARRAY.

Commençons par la première étape.

Comment créer VARRAY en tant qu'objet de base de données ?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

Le code ci-dessus en cas d'exécution réussie créera un VARRAY avec le nom dbObj_vry qui aura la limite de taille de 5 éléments et leur type de données sera NUMBER. Ce VARRAY a une portée plus large et peut être utilisé non seulement à l'intérieur du bloc PL/SQL mais aussi avec d'autres objets de schéma.

Comment utiliser le VARRAY créé en tant qu'objet de base de données ?

L'avantage de définir le VARRAY en tant qu'objet de base de données est qu'il peut être référencé à partir de n'importe quel programme autorisé à l'utiliser. Vous pouvez utiliser le VARRAY avec des tables, des enregistrements ou même avec des blocs PL/SQL.

Prenons l'exemple :

Exemple 1. Comment définir une colonne d'une table à l'aide de VARRAY ?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

Dans le code ci-dessus, nous avons créé une table avec le nom Calendar qui a deux colonnes day_name et day_date. La première colonne peut contenir des données de type VARCHAR2 tandis que la deuxième colonne peut contenir des données de type dbObj_vry qui est un VARRAY.

Info :Que signifie définir une colonne d'une table comme type VARRAY ?
Définir une colonne d'une table en tant que type VARRAY signifie qu'elle peut contenir "n" nombre de valeurs. Où 'n' est égal à la limite de taille de ce varray. Dans notre cas, la limite de taille de VARRAY est de 5, ce qui signifie que la colonne "Day Date" de la table Calendar peut contenir 5 valeurs.

Comment insérer des données dans le VARRAY ?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Cette instruction d'insertion DML insère une ligne dans la table Calendar. L'insertion de données dans la première colonne "Nom du jour" qui est de type de données varchar2 est facile. Il vous suffit d'écrire les données souhaitées et de les placer entre guillemets simples. Mais il n'en va pas de même avec la deuxième colonne "Day Date" qui est de type VARRAY. Afin d'insérer des données dans la colonne de type VARRAY, vous devez d'abord écrire le nom du varray et fournir les données.

De plus, vous devez vous assurer de quatre choses

  1. Les données que vous fournissez doivent être entre parenthèses.
  2. Le type de données des données doit correspondre au type de données des éléments de votre VARRAY qui, dans notre cas, est NUMBER.
  3. Le nombre d'éléments que vous insérez dans la colonne doit être inférieur ou égal à la limite de taille du VARRAY. Dans notre cas, c'est 5 et nous insérons 4 éléments dans la colonne, ce qui est tout à fait correct. Mais si supposons que j'insère 6 éléments dans la colonne, il y aura une erreur.
  4. Si vous insérez plusieurs données dans la colonne VARRAY, assurez-vous de séparer les éléments les uns des autres à l'aide d'un point-virgule.

Comment récupérer les données du VARRAY ?

Les données peuvent être récupérées à l'aide de l'instruction SELECT. Toute instruction SELECT correctement écrite fera l'affaire. Par exemple

SELECT * FROM calendar;

Cela récupérera toutes les données du calendrier de la table.

Si vous souhaitez afficher les données stockées dans la colonne, qui contient des données de type VARRAY, dans un format relationnel, vous pouvez vous aider de l'expression TABLE. Par exemple

SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Cette instruction SELECT vous montrera les données des deux colonnes dans un format relationnel. L'expression TABLE peut ouvrir l'instance de collection et représenter les lignes d'objet au format relationnel.

Comment mettre à jour les données d'une colonne de type VARRAY ?

La mise à jour des valeurs de la colonne de type VARRAY est assez simple. L'exemple ci-dessous vous montrera comment mettre à jour les valeurs des colonnes day_date.

UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Exemple 2. Comment utiliser VARRAY avec un bloc PL/SQL ?

Dans l'exemple ci-dessus, nous avons appris comment utiliser le VARRAY qui est créé en tant qu'objet de base de données pour définir la colonne d'une table. Nous allons maintenant voir comment utiliser le même varray dans un bloc PL/SQL.

DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Vous avez vu cet exemple dans le dernier tutoriel. Il n'y a pas de changements aussi importants ici, sauf que cette fois, au lieu de définir le VARRAY à l'intérieur du bloc, nous l'avons créé en tant qu'objet de base de données autonome. Je vous suggère de jeter un œil au dernier tutoriel où j'ai expliqué le code ci-dessus en détail.

C'est le tutoriel PL/SQL sur la façon de créer VARRAY en tant qu'objet de base de données dans Oracle. J'espère que vous avez apprécié la lecture, si c'est le cas, assurez-vous de partager ce blog sur vos réseaux sociaux avec vos amis. Merci et bonne journée !