Database Reference
In-Depth Information
Il est possible de construire dynamiquement des collections (
NESTED TABLE
ou
VARRAY
) lors
de la création d'une vue objet à l'aide des directives
CAST
et
MULTISET
. La directive
cast
convertit un résultat dans un type (ici, la requête crée une collection qui est nommée). Si le
résultat d'une requête retourne plusieurs enregistrements, il est nécessaire d'utiliser conjointe-
ment la directive
multiset
.
La déinition de la vue inclut la spéciication de l'OID basé sur la clé primaire de la table source
(colonne
department_id
). La requête extrait, dans un premier temps, quatre colonnes de
la table
departments
. Par la suite, pour chaque enregistrement de la table
employees
, la
directive
MULTISET
construit un ensemble d'éléments composé de plusieurs colonnes de la
table
enfant
. La directive
CAST
nomme l'ensemble obtenu
emps_nt
, collection affectée à la
dernière colonne du type de la vue.
Tableau 4-24 : Création de la vue objet
Création de la vue
Structure de la vue
CREATE VIEW v_obj_dept_emps OF
departement_t
WITH OBJECT IDENTIFIER(n_dept)
AS SELECT d.department_id,
d.department_name,
d.manager_id, d.location_id,
CAST(MULTISET
(SELECT e.employee_id, e.irst_name,
e.last_name, e.hire_date
FROM hr.employees e
WHERE e.department_id=d.department_id)
AS emp_nt_t
) AS emps_nt
FROM hr.departments d;
SQL> DESC v_obj_dept_emps
Name Null? Type
-----------------------
-------- ------------
N_DEPT NUMBER(4)
NOM_DEPT VARCHAR2(30)
ID_MANAGER
NUMBER(6)
LIEU NUMBER(4)
EMPS_NT
EMP_NT_T
Il est possible à présent de bénéicier de la jointure implicite offerte par la collection. La
requête suivante afiche la totalité de la vue.