IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

PL SQL objet à partir de relationnel


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 14
    Points : 13
    Points
    13
    Par défaut PL SQL objet à partir de relationnel
    Bonjour,

    Soit deux tables tout ce qu'il y a de plus relationnelles par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    create table assure(
    id char(13),
    nom varchar2(15),
    prenom varchar2(15),
    constraint pk_ass primary key(id)
    );
     
    create table remboursement(
    idremb number(10),
    idassure char(13),
    valeur number(5,2),
    date_remb date,
    constraint pk_ben primary key(idremb),
    constraint fk_rembass foreign key (idassure) references assure
    );
    Avec l'identifiant de remboursement renseigné à partir d'une sequence et d'un trigger. J'ai crée deux type objets correspondants, et un type varray de remboursements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    create or replace type typ_remb as object
    (
    idremb number(10),
    valeur number(5,2),
    date_remb date
    )
    ;
     
     
    create or replace type tab_remb is varray(10000) of typ_remb;
     
     
    create or replace type typ_assure as object
    (
    id char(13),
    nom varchar2(15),
    prenom varchar2(15),
    remboursements tab_remb
    )
    ;
    J'ai ensuite crée une vue qui me permet de manipuler mes assurés et remboursements comme des objets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create view VASSURE of typ_assure with object OID(id) as
    select id, nom, prenom, 
    CAST
    (multiset
    (select typ_remb(idremb , valeur, date_remb) from remboursement B where B.idassure=A.id)
    as tab_remb)
    from assure A;
    J'aimerai savoir si c'est possible de pratiquer des insertions sur la vue VASSURE, c'est à dire en PL de créer un objet de type TYP_ASSURE contenant des objets de type TYP_REMB et d'inserer cet objet dans la vue afin que cela insere de nouvelles lignes dans les tables assure et remboursement.
    J'ai tenté un bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a:=typ_assure('2760613055403', 'BOYER', 'MAUD', null);
    insert into vassure values (a);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Mais ça ne marche pas, dois je passer par un trigger [b]instead of[/b] ou y a t'il un autre moyen.
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Je crains qu'effectivement, vous ne puissiez mettre la vue à jour aussi simplement, car vous avez en fait 2 tables bien distinctes.
    L'idéal, serait de créer une table objet plutôt qu'une vue. (la table objet contiendrait alors la collection)
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Merci

    Je ne peux pas créer une table objet car je suis sur une base existante depuis longtemps, je ne peux donc pas modifier la structure des tables, je dois m'y adapter.

    J'ai fais des recherches dans ce sens car j'ai entendu parler d'une methode pour effectuer des inserts de tableaux de lignes dans des tables. Methode qui a ce qui parait serait plus optimisée que des series d'insert.

    Est ce que cela vous dit quelque chose?

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Oui, une table peut contenir une (ou plusieurs) collection.
    Cela ne s'applique pas à votre cas puisque vous avez deux tables relationnelles distinctes (la 2ème représentant votre collection)
    il ne s'agit donc pas d'une table imbriquée.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Merci encore pour votre disponibilité et votre efficacité

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête SQL Direct à partir de VBA
    Par petitmic dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 25/05/2007, 17h35
  2. [VB6][VBE][SQL][...]Objets Command avec MailMerge
    Par jacma dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/05/2006, 10h12
  3. Réponses: 13
    Dernier message: 20/03/2006, 14h31
  4. Réponses: 1
    Dernier message: 20/02/2006, 10h59
  5. Réponses: 6
    Dernier message: 18/01/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo