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

SQL Oracle Discussion :

Object et Table of record


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut Object et Table of record
    Bonjour à tout le monde,

    Dans le but d'utiliser DBMS_XMLGEN pour générer d'un coup un fichier XML à partir d'une seule requête, je dois créer un objet qui contienne des éléments simples et des éléments multivalués.

    Par ailleurs, vu que les structures sont très évolutives sur les tables sur lesquelles je travaille, je voudrais utiliser du rowtype.

    Je voudrais donc pouvoir créer un type

    create type T_LISTE as table of MA_TABLE%rowtype; (1)

    qui soit utilisé par un autre type

    create type T_OBJET as OBJECT (MONID number, MA_LISTE T_LISTE); (2)

    Seulement voilà, (1) ne peut être créé qu'à l'intérieur d'un bloc PL/SQL alors que (2) ne peut l'être que globalement.

    Comme (2) référence (1) je suis un peu bloqué.

    Des idées avant que je n'aille me pendre ??

    Petite précision, j'utilise une 9.2.0.6

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Par défaut
    Bonsoir,

    pourquoi ne pas faire un type objet simulant le rowtype:

    Si on suppose MA_TABLE(col1 type,col2 type,...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TYPE uneRow AS OBJECT(
    col1 type,
    col2 type,
    ...);
    /
    CREATE OR REPLACE TYPE desRows AS TABLE of uneRow;
    cdt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut
    Bonjour,

    Merci pour la réponse.

    Certes, c'est une possibilité, mais je veux rendre le code indépendant au maximum de la structure des tables et n'avoir à le modifier que si on rajoute une table (je ne ferais pas la maintenance du programme par la suite, j'en exploiterai juste les résultats), pas lorsqu'on rajoute des colonnes.

    Le %rowtype m'est nécessaire. Associé à dbms_xmlgen, il m'assure que je reçoive un fichier toujours bien décrit que je puisse facilement parser avec SAX de l'autre côté.

    Après avoir beaucoup lu, je pense que le problème est insoluble et que je vais devoir faire le multivalué papatte-mimine.

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

Discussions similaires

  1. Erreur "No such object in table"
    Par Philippe Bastiani dans le forum JOnAS
    Réponses: 3
    Dernier message: 27/08/2011, 06h32
  2. 1 object 2 tables
    Par Sebastien0104 dans le forum Hibernate
    Réponses: 4
    Dernier message: 31/03/2010, 05h43
  3. Remplir REF CURSOR avec un objet "Is Table or Record"
    Par jeanjean1984 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 26/02/2009, 15h06
  4. pl/sql Table OF RECORD - Encadrement itératif
    Par persam dans le forum PL/SQL
    Réponses: 2
    Dernier message: 03/10/2007, 15h16
  5. Récupération d'une table type record
    Par cyril dans le forum SQL
    Réponses: 8
    Dernier message: 08/06/2007, 17h01

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