mon master2 ISIFAR

ISIFAR
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 COURS 3

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: COURS 3   Sam 3 Déc à 22:10

Vues du dictionnaire de données
Code:
DESC USER_TYPES
DESC USER_TYPE_ATTRS
DESC USER_TYPE_METHODS
DESC USER_TYPE_VERSIONS
DESC USER_COLL_TYPES
DESC USER_TYPE_INDEXTYPES


--Structure des vues Objets-Relationnelles du dictionnaire

DESC USER_OBJECT_TABLES


--Exemple : Liste des types objets & leurs attributs

COL type_name FOR A20;
COL attr_name FOR A20

SELECT type_name, attr_name, attr_type_name
FROM  user_type_attrs
ORDER BY 1;




--Liste des tables objets

COL table_name      FOR A20;
COL object_id_type  FOR A20;
COL table_type_owner FOR A20;
COL table_type      FOR A20

SELECT table_name, object_id_type,
      table_type_owner, table_type
FROM  user_object_tables
ORDER BY 1;









CREATION DES TYPES ET TABLES "OR"

Code:
CREATE OR REPLACE TYPE ty_adresse;
CREATE OR REPLACE TYPE ty_personne;

CREATE OR REPLACE TYPE ty_adresse AS OBJECT
  (numero NUMBER,
  rue    VARCHAR2(20),
  ville  VARCHAR2(30)
  )
/

CREATE OR REPLACE TYPE ty_personne AS OBJECT
  (nom    VARCHAR2(20),
  prenom  VARCHAR2(20),
  adresse ty_adresse
  )
/

CREATE OR REPLACE TYPE ty_possede AS OBJECT
  (nom            VARCHAR2(20),
  prenom          VARCHAR2(20),
  immatriculation CHAR(10)
  )
/

CREATE OR REPLACE TYPE t_voiture AS OBJECT
  (immatriculation CHAR(10),
  marque          VARCHAR2(20),
  modele          VARCHAR2(20)
  )
/

CREATE TABLE OR_Personne of ty_personne
  ( CONSTRAINT pk_ORPersonne PRIMARY KEY(nom, prenom));

CREATE TABLE or_voiture OF t_voiture
  ( CONSTRAINT pk_ORVoiture PRIMARY KEY (immatriculation) );

CREATE TABLE or_possede OF ty_possede
  ( CONSTRAINT pk_ORPossede  PRIMARY KEY (nom, prenom, immatriculation),
    CONSTRAINT fk_ORPersonne FOREIGN KEY (nom, prenom) REFERENCES OR_Personne,
    CONSTRAINT fk_ORVoiture  FOREIGN KEY (immatriculation) REFERENCES OR_voiture
  );


Visualisation de la structure

Code:
-- La commande "DESC" de SQL*PLUS permet de visualiser
DESC or_personne
DESC or_voiture
DESC or_possede


INSERT INTO or_personne(nom, prenom,adresse)
VALUES('dupond','raymond', ty_adresse('33','rue de marseille', 'bordeaux 33000'));

INSERT INTO or_personne
VALUES('dupont','cecile', ty_adresse('35','rue de paris', 'bordeaux 33000'));

INSERT INTO or_personne(prenom,nom,adresse)
VALUES('charles','dickens', ty_adresse('33','rue de marseille', 'bordeaux 33000'));

INSERT INTO or_voiture(immatriculation, marque, modele)
VALUES('205VF33','peugeot', '205');

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupond','raymond','205VF33');

INSERT INTO or_personne(nom,prenom,adresse)
VALUES ('amuah','remi', ty_adresse(NULL,NULL,NULL));

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupont','cecile','284VF75');

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dickens','charles','920XX33');

INSERT INTO or_voiture(immatriculation, marque, modele)
VALUES('284VF75','citroen', 'picasso');

INSERT INTO or_voiture(immatriculation, marque, modele)
VALUES('920XX33','peugeot', '307');




Visualisation les données
Code:

COL nom    FORMAT A15
COL prenom  FORMAT A15
COL adresse FORMAT A62

SELECT nom, prenom, adresse
FROM  or_personne;

SELECT x1.nom, x1.prenom,
      x1.adresse.numero,
      x1.adresse.rue,
      x1.adresse.ville
FROM or_personne x1;

SELECT * FROM or_voiture;

SELECT * FROM or_possede;


COL nom            FORMAT A9  HEAD 'Nom'
COL prenom          FORMAT A9  HEAD 'Prenom'
COL no              FORMAT 9999 HEAD 'Numero'
COL voie            FORMAT A20  HEAD 'Voie'
COL City            FORMAT A15  HEAD 'Ville'
COL marque          FORMAT A10  HEAD 'Marque'
COL modele          FORMAT A10  HEAD 'Modele'
COL immatriculation FORMAT A10  HEAD 'immatri.'

SELECT x1.nom, x1.prenom,
      x1.adresse.numero no, x1.adresse.rue voie,
      x1.adresse.ville city,
      x3.*
FROM  or_personne x1, or_possede x2, or_voiture x3
WHERE  x1.nom=x2.nom      (+)
AND    x1.prenom=x2.prenom (+)
AND    x2.immatriculation =x3.immatriculation (+);




Code:

-- La commande "SELECT REF(alias) FROM ..." permet d'extraire les OID (Objet IDentifier)
-- des objets de la table à l'aide de la directive "REF":

SELECT REF(x1) FROM or_personne x1;

SELECT REF(x2) FROM or_possede x2;

SELECT REF(x3) FROM or_voiture x3;



SELECT REF(x1),
      x1.nom,
      x1.prenom,
      x1.adresse.numero,
      x1.adresse.rue,
      x1.adresse.ville
FROM or_personne x1;


SELECT REF(x1), x1.*, REF(x3), x3.*
FROM  or_personne x1, or_possede x2, or_voiture x3
WHERE  x1.nom = x2.nom (+)
AND    x1.prenom = x2.prenom (+)
AND    x2.immatriculation = x3.immatriculation (+);



Code:

-- La commande "SELECT VALUE(alias) FROM ..." permet d'extraire le contenu sous la
-- forme d'un type à l'aide de la dirctive "VALUE":

SELECT VALUE(x1)
FROM  or_personne x1; 

SELECT VALUE(x2)
FROM  or_voiture x2;

SELECT VALUE(x3)
FROM  or_possede x3;


--Utilisation de "UPDATE & DELETE"

UPDATE or_personne x1
SET  x1.adresse.numero='10'
WHERE x1.nom = 'dupond';

DELETE FROM or_personne x1 WHERE x1.adresse.numero IS NULL;



Code:
--La commande "ALTER TYPE...ADD..." permet d'ajouter un attribut à un TAD :

ALTER TYPE ty_adresse
ADD ATTRIBUTE (codePostal VARCHAR2(5))
CASCADE;


DESC ty_adresse

SELECT * FROM or_personne;
MARCHE PAS!!!

Code:
--La commande "DROP TYPE...ADD..." supprime un TAD :
DROP TYPE ty_adresse FORCE;

DESC or_personne

SELECT * FROM or_personne;


Dernière édition par le Lun 5 Déc à 22:16, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 1:38

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 1:43

Code:
CREATE OR REPLACE TYPE t_constructeur AS OBJECT
  (marque          VARCHAR2(20),
  nonsociete          VARCHAR2(20)
  )
/

CREATE TABLE or_constructeur of t_constructeur
  ( CONSTRAINT pk_ORconstructeur PRIMARY KEY(marque));


--Une référence est définie par l'utilisation du mot clé "REF"
La fonction REF(alias) permet d'extraire un ou plusieurs OID  :

drop table or_possede;

drop table or_voiture;

CREATE OR REPLACE TYPE ty_voiture AS OBJECT
 (immatriculation CHAR(10),
  marque          REF t_constructeur,
  modele          VARCHAR2(25)
 )
/

CREATE TABLE or_voiture OF ty_voiture
(CONSTRAINT pk_ORVoiture PRIMARY KEY (immatriculation) );
 
DESC or_voiture

DESC or_constructeur


Insertion d'une référence
Code:


INSERT INTO or_constructeur(marque, nonsociete)
VALUES ('peugeot','PSA:peugeot-citroen');

INSERT INTO or_voiture(immatriculation, marque, modele)
VALUES ('303VF75',
              (SELECT REF(x1)
                FROM  or_constructeur x1
                WHERE  x1.marque = 'peugeot'),
        '407');


INSERT INTO or_voiture(immatriculation, marque, modele)
VALUES ('284VF75',
              (SELECT REF(x1)
                FROM  or_constructeur x1
                WHERE  x1.marque = 'peugeot'),
        '207');

INSERT INTO or_voiture(immatriculation, marque, modele)
SELECT '303VF', REF(x1), '407'
FROM  or_constructeur x1
WHERE  x1.marque = 'peugeot';



SELECT VALUE(x1), x1.marque.marque, x1.marque.nonsociete
FROM  or_voiture x1
WHERE  x1.marque.marque ='peugeot';



SELECT VALUE(x4), REF(x4)
FROM  or_constructeur x4
WHERE  x4.marque ='peugeot';


CREATE TABLE or_possede OF ty_possede
  ( CONSTRAINT pk_ORPossede  PRIMARY KEY (nom, prenom, immatriculation),
    CONSTRAINT fk_ORPersonne FOREIGN KEY (nom, prenom) REFERENCES OR_Personne,
    CONSTRAINT fk_ORVoiture  FOREIGN KEY (immatriculation) REFERENCES OR_voiture
  );

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupond','raymond','303VF75');

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupont','cecile','284VF75');

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dickens','charles','920XX33');



COL nom    FORMAT A9  HEAD 'Nom';
COL prenom  FORMAT A9  HEAD 'Prenom';
COL no      FORMAT 9999 HEAD 'Numero';
COL voie    FORMAT A20  HEAD 'Voie';
COL City    FORMAT A15  HEAD 'Ville';
COL marq    FORMAT A7  HEAD 'Marque';
COL modele  FORMAT A10  HEAD 'Modele';
COL societe FORMAT A20  HEAD 'Societe';
COL immatri FORMAT A8  HEAD 'Immatri';

SELECT x1.nom, x1.prenom,
      x1.adresse.numero no,
      x1.adresse.rue voie,
      x1.adresse.ville city,
      x3.immatriculation immatri,
      x3.marque.marque marq,
      x3.marque.nonsociete societe
FROM  or_personne x1, or_possede x2,
      or_voiture x3
WHERE x1.nom = x2.nom      (+)
AND  x1.prenom = x2.prenom (+)
AND  x2.immatriculation = x3.immatriculation (+) ;
     
     

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 3:10

DEFERENCEMENT:

Le déférencement permet d'extraire un objet cible en fonction d'un OID(obtention de la valeur de l'objet)
La fonction DEREF(reference) extrait le contenu de l'objet à l'adresse de la référence
à l'aide de l'ordre SQL "SELECT DEREF(reference) FROM..."

Code:

SELECT x3.immatriculation, REF(x3)
FROM  or_voiture x3
ORDER BY immatriculation;


SELECT x4.immatriculation, DEREF(x4.marque)
FROM or_voiture x4
ORDER BY immatriculation;


UPDATE:

La commande "UPDATE" suivie de "SELECT REF(alias)..." permet d'attacher un objet
d'une table à un autre objet d'une autre table

Code:

UPDATE or_voiture x3
SET    x3.marque = NULL
WHERE  x3.immatriculation = '284VF75';


SELECT *
FROM or_voiture
WHERE immatriculation='284VF75';


UPDATE or_voiture x3
SET    x3.marque = ( SELECT REF(x4) FROM or_constructeur x4
                    WHERE x4.marque = 'peugeot')
WHERE  x3.immatriculation = '284VF75';


SELECT *
FROM  or_voiture
WHERE  immatriculation = '284VF75';
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 13:01

Jointures implicite :
Grâce à la notation pointée, les jointures implicites sont des jointures entre tables liées par la référence.
L'utilisation de celle-ci à la place des clés étrangères évite de composer des jointures entre tables

La notation pointée peut s'écrire de la manière suivante :
* alias.objetColonne.référence ;
* alias.colonneObjet.référence.colonne ;
* alias.référence.colonne.



Encapsulation des objets :
L'encapsulation se traduit par la présence d'une interface composée de méthodes lors de la déclaration du type.
Les méthodes permettent ainsi à l'accès des objets des "tables OR"

L'encapsulation comprend deux parties :
* La partie déclarative de la classe avec la commande
CREATE TYPE <nomType> ... <nomMethode (parametre...)>

* La partie du corps de la méthode avec la commande
CREATE TYPE BODY <nomType> AS



Chaque TAD peut comporter des méthodes
Celles-ci peuvent être implémentée avec des fonctions ou une procédure.
La directive SELF désigne l'objet sur lequel porte la méthode

3 types de méthodes :
* MEMBER (méthode membre)
* STATIC (méthode statique)
* CONSTRUCTOR (méthode constructeur)

MEMBER : sont invoquées explicitement par un objet du type (SELF)
=> au niveau des objets ligne (méthode d'instance)

STATIC : sont invoquées par le type
=> impossible d'utiliser le paramètre SELF dans le code d'une méthode de catégorie STATIc (méthode de classe)

CONSTRUCTOR : s'appliquent aux objets non persistants et implicitement à tout objet lors de l'instanciation


Code:
DROP TABLE or_possede;
DROP TABLE or_personne;


CREATE OR REPLACE TYPE ty_personne AS OBJECT
 ( nom          VARCHAR2(20),
  prenom        VARCHAR2(20),
  datenaissance DATE,
  adresse      ty_adresse,
  MEMBER FUNCTION  nbdePersonne    RETURN NUMBER,
  MEMBER FUNCTION  possedeNbVoiture RETURN NUMBER,
  MEMBER PROCEDURE demenage (nvlAdresse IN ty_adresse),
  MEMBER PROCEDURE ajouterPersonne (nomPersonne    IN VARCHAR2,
                                    prenomPersonne  IN VARCHAR2,
                                    adressePersonne IN ty_adresse),
  MEMBER PROCEDURE majDateNaissance (nvlDateNaissance IN date)
 )
/

CREATE TABLE OR_Personne of ty_personne
  ( CONSTRAINT pk_ORPersonne PRIMARY KEY(nom, prenom));

CREATE TABLE or_possede OF ty_possede
  ( CONSTRAINT pk_ORPossede  PRIMARY KEY (nom, prenom, immatriculation),
    CONSTRAINT fk_ORPersonne FOREIGN KEY (nom, prenom) REFERENCES OR_Personne,
    CONSTRAINT fk_ORVoiture  FOREIGN KEY (immatriculation) REFERENCES OR_voiture
  );





Code:

CREATE OR REPLACE TYPE BODY ty_Personne AS
  MEMBER FUNCTION possedeNbVoiture RETURN NUMBER IS nbVoiture NUMBER;
  BEGIN
    SELECT COUNT(x2.immatriculation) INTO nbVoiture
    FROM or_possede x2
    WHERE x2.nom = SELF.nom;
    DBMS_OUTPUT.PUT_LINE('NB voiture(s):'||nbVoiture);
    RETURN (nbVoiture);
  END possedeNbVoiture;

  MEMBER PROCEDURE demenage (nvlAdresse IN ty_adresse)
  IS
  BEGIN
    UPDATE or_Personne SET adresse = nvlAdresse
    WHERE nom = SELF.nom
    AND  prenom = SELF.prenom;
  END demenage;

  MEMBER FUNCTION nbdePersonne RETURN NUMBER IS totalPersonne NUMBER;
    BEGIN
      SELECT COUNT(*) INTO totalPersonne
      FROM or_personne;
      RETURN  totalPersonne;
    END nbdePersonne;

  MEMBER PROCEDURE ajouterPersonne (nomPersonne    IN VARCHAR2,
                                    prenomPersonne  IN VARCHAR2,
                                    adressePersonne IN ty_adresse)
  IS
  BEGIN
      INSERT INTO or_personne(nom,prenom)
      VALUES(nomPersonne, prenomPersonne);
  END ajouterPersonne; 

  MEMBER PROCEDURE majDateNaissance (nvlDateNaissance IN date)
  IS
  BEGIN
      UPDATE or_Personne SET dateNaissance = nvlDateNaissance
      WHERE nom = SELF.nom
      AND  prenom = SELF.prenom
  END majDateNaissance;

END;
/


Exemple d'utilisation
Code:

INSERT INTO or_personne(nom, prenom,adresse)
VALUES('dupond','raymond', ty_adresse('33','rue de marseille', 'bordeaux 33000'));

INSERT INTO or_personne
VALUES('dupont','cecile', ty_adresse('35','rue de paris', 'bordeaux 33000'));

INSERT INTO or_personne(prenom,nom,adresse)
VALUES('charles','dickens', ty_adresse('33','rue de marseille', 'bordeaux 33000'));

INSERT INTO or_personne(nom,prenom,adresse)
VALUES ('amuah','remi', ty_adresse(NULL,NULL,NULL));




SELECT VALUE(x1)
FROM or_personne x1;

-- Exemple d'appel des méthodes MEMBER
-- Nouvelle Adresse : Appel des la procédure "demenage()"

DECLARE
  personneAModifier ty_Personne;
  nouvelleAdresse  ty_Adresse;
BEGIN
  SELECT VALUE(x1) INTO personneAModifier
  FROM or_personne x1
  WHERE x1.nom='dupond';
 nouvelleAdresse := NEW ty_adresse('1','place gambetta', 'bordeaux 33000');
 personneAModifier.demenage(nouvelleAdresse);
END;
/




SELECT VALUE(x1)
FROM or_personne x1;


INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupond','raymond','205VF33');

INSERT INTO or_personne
VALUES('dupont','cecile','21-APR-81', ty_adresse('35','rue de paris', 'bordeaux 33000'));

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dupont','cecile','303VF75');

INSERT INTO or_possede(nom, prenom,immatriculation)
VALUES('dickens','charles','284VF75');


SELECT VALUE(x1)
FROM or_possede x1;

--  Appel de la procédure "possedeNbVoiture()"
-- Nb de voitures
DECLARE
 laPersonneConcernee ty_personne;
 nbVoiture          NUMBER;
 nomPersonne        VARCHAR2(20):='dupond';

BEGIN
  SELECT VALUE(x1) INTO laPersonneConcernee
  FROM  or_personne x1
  WHERE  x1.nom = nomPersonne;

  nbVoiture := laPersonneConcernee.possedeNbVoiture();
  DBMS_OUTPUT.PUT_LINE('dupond a : ' || nbVoiture || 'voiture(s)');

END;
/



SELECT VALUE(x1) FROM or_personne x1;

--  Appel de la procédure "majDateNaissance()"
-- Nb de voitures
DECLARE
  personneAModifier ty_Personne;
  -- dateNaissance date:= '25/10/85';
  dateNaissance  date := TO_DATE('25/10/85','DD/MM/YY');
  nomPersonne    VARCHAR2(15) := 'dickens';
  prenomPersonne VARCHAR2(15) := 'charles';

BEGIN
  SELECT VALUE(x1) INTO personneAModifier
  FROM or_personne x1
  WHERE x1.nom    = nomPersonne
  AND  x1.prenom = prenomPersonne;
 
  personneAModifier.majDateNaissance(dateNaissance);
END;
/


SELECT VALUE(x1) FROM or_personne x1;


SUPPRESION D'UNE METHODE
Code:
ALTER TYPE ty_personne
DROP MEMBER PROCEDURE ajouterPersonne
  (nomPersonne    IN VARCHAR2,
    prenomPersonne  IN VARCHAR2,
    adressePersonne IN ty_adresse)
CASCADE;

DESC ty_personne


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 16:54

[...]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 17:08

Les méthodes implémentées

Code:
--Affichage des méthodes implémentées
SELECT type_name, method_name,
      method_type, parameters,
      DECODE(results, 1, 'Function', 'Procedure')
      methods
FROM  user_type_methods
ORDER BY 5;



--Affichage des méthodes implémentées avec leur paramètres
COL method_name    FORM A20;
COL param_name      FORM A20;
COL param_type_name FORM A20;

SELECT method_name, method_no,
      param_name, param_type_name
FROM  user_method_params
ORDER BY 5;


-- Affichage des méthodes implémentées avec leur paramètres de retour

COL methd_name    FORM A20
COL param_name    FORM A20
COL âram_tye_name FORM A20

SELECT method_name, method_no, result_type_name
FROM user_method_results
ORDER BY 2;

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 17:09

[...]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: COURS 3   Dim 4 Déc à 17:16

TYPE "VARRAY"

Code:

CREATE TYPE typ_telephone AS OBJECT
  (numTel VARCHAR2(20))
/

CREATE TYPE typ_telephones AS VARRAY(3) OF typ_telephone
/

CREATE TYPE typ_etudiant AS OBJECT
  (numEtud  NUMBER,
  nom      VARCHAR2(30),
  telephone typ_telephones)
/

CREATE TABLE etudiants OF typ_etudiant
 (CONSTRAINT pk_Etudiants PRIMARY KEY(numEtud));

DESC typ_telephone
DESC typ_telephones
DESC typ_etudiant
DESC etudiants

INSERT INTO etudiants (numEtud, nom, telephone)
VALUES('1','dupond',typ_telephones(typ_telephone('01.46.00.10.20')));

INSERT INTO etudiants (numEtud, nom, telephone)
VALUES('2','dupont',typ_telephones( typ_telephone('01.46.00.10.21'),
                                    typ_telephone('01.46.00.10.22'))
      );

INSERT INTO etudiants (numEtud, nom, telephone)
VALUES('3','dubony',typ_telephones( typ_telephone('01.46.00.10.23'),
                                    typ_telephone('01.46.00.10.24'),
                                    typ_telephone('01.46.00.10.25'))
      );

SELECT VALUE(x1) FROM etudiants x1;

SELECT * FROM etudiants;




--Initialisation du VARRAY à nul & dépassement de la taille du varray

INSERT INTO etudiants (numEtud, nom, telephone)
VALUES('4','duvignyy',typ_telephones(typ_telephone(NULL),
                                    typ_telephone(NULL),
                                    typ_telephone(NULL))
      );

INSERT INTO etudiants (numEtud, nom, telephone)
VALUES('5','bill',typ_telephones(  typ_telephone('01.46.00.10.26'),
                                    typ_telephone('01.46.00.10.27'),
                                    typ_telephone('01.46.00.10.28'),
                                    typ_telephone('01.46.00.10.29'))
      );



MODIFICATION D'UN VARRAY
* Pas de possibilité de manipuler sous SQL un élément d'une collection VARRAY
* Obligation d'utiliser le PL/SQL

Exemple :
Code:
DECLARE
  tableauTel typ_telephones;
BEGIN
  SELECT telephone INTO tableauTel
  FROM etudiants
  WHERE numEtud = 1
  FOR UPDATE OF telephone;
  tableauTel(1).telephone := '05.56.31.00.01';
  UPDATE etudiants set telephone = tableauTel
  WHERE numetud = 1;
END;
/

 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Contenu sponsorisé




MessageSujet: Re: COURS 3   Aujourd'hui à 15:45

Revenir en haut Aller en bas
 
COURS 3
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les cours. Division B.
» IEJ cours et correction des épreuves
» Cours sur le Modèle Linéaire
» NON à la suppression du cours de Grec en CPGE scientifique !
» Une religieuse assassinée au cours d'un rite satanique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
mon master2 ISIFAR :: 1er semestre :: Concepts avancés de BD-
Sauter vers: