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

PL/SQL Oracle Discussion :

Parcour dynamique d'un enregistrement


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut Parcour dynamique d'un enregistrement
    Bonjour à tous. J'aimerais savoir s'il est possible de copier des données issues d'un record dans un tableau sans passer par le nom des colonnes. Clairement, j'aimerai pouvoir parcourir un record grâce à un indice numérique et non pas par le nom des colonnes.

    Voici le résultat que j'aimerais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    --Type de tableau
    TYPE ONE_DIM_ARRAY IS TABLE OF VARCHAR2(127) INDEX BY BINARY_INTEGER;
     
    --Variables
    v_Array ONE_DIM_ARRAY;
    v_Record ma_table%ROWTYPE;
     
    --J'enregistre la ligne de ma table dans le record (ma table ne contient qu'une ligne)
    SELECT * INTO v_Record FROM ma_table;
     
    --Copie du record dans le tableau
    v_Array(1) := v_Record.id;
    v_Array(2) := v_Record.created_on;
    etc...
    Au lieu de faire v_Record.nom_colonne pour récupérer la valeur, existe-t-il un moyen de faire v_Record(1) pour récupérer la valeur (je sais que cette écriture n'existe pas pour les record, c'est pour illustrer ce que j'aimerai faire)

    La base est une 10g2

    Merci de votre aide car pour le moment le problème reste insoluble.

    Djaydine

  2. #2
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Je me pencherai vers le package DBMS_SQL qui, si je me souvient bien, permet de s'affranchir du nom des colonnes.
    La doc Oracle est ici : http://download.oracle.com/docs/cd/B...l.htm#ARPLS058

  3. #3
    Expert confirmé
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE
      TYPE TR IS TABLE OF la_table%ROWTYPE INDEX BY binary_integer;
      TabR tr;
    BEGIN
      SELECT *
      BULK   collect
      INTO   TabR
      FROM   la_table
      WHERE  ROWNUM<= 1
      ;
      dbms_output.put_line(tabR(1).la_colonne);
    END;

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Une extension à la question initiale : est-ce qu'il est possible de définir un tableau, non pas à partir de la structure d'une table, mais à partir de variables décrites une à une manuellement ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut
    Merci xdescamp, je vais regarder de ce côté là.

    SheikYerbouti, merci de ta réponse mais dans ton exemple j'ai quand même besoin de connaitre le nom de la colonne à laquelle je veux accéder.

    dgi77, ce que tu cherches à faire c'est typiquement ce que j'ai écrit dans mon exemple de code sous le commentaire "copie du record dans le tableau". Il suffit que tu remplace v_Record.id par une variable de ton choix.

    Sinon si quelqu'un a une solution clé en main je suis preneur. Il y a si peu d'exemple sur Internet concernant ce problème et ça permettrait pourtant de faire des procédures totalement générique.

    Merci à tous

    Djaydine

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut
    Pour ceux qui en auraient besoin, xdescamp a donné la bonne piste avec son lien et le package DBMS_SQL. Cliquez sur son lien et regardez l'exemple 8. Dès que j'aurais un exemple plus concret je le mettrai ici.

    Djaydine

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

Discussions similaires

  1. [Débutant] Figures dynamiques et leur enregistrement, possible?
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/07/2010, 19h59
  2. Formulaire dynamique, recuperation d'enregistrement
    Par pooi1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 19/06/2007, 19h16
  3. Parcours dynamique des éléments d'un form
    Par leminipouce dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/10/2006, 19h09
  4. Parcours dynamique des champs
    Par cosmos38240 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/11/2005, 14h54
  5. Enregistrement issu d'un curseur dynamique
    Par vanessaf22 dans le forum SQL
    Réponses: 26
    Dernier message: 15/04/2004, 13h26

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