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 :

[oracle8i]map sur le nom des champs et non sur leur ordre


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [oracle8i]map sur le nom des champs et non sur leur ordre
    bonjour,

    Je travaille avec Oracle8i Enterprise Edition Release 8.1.7.2.0.

    Je voudrais savoir si il est possible de spécifier quelque part (paramétre) à oracle de faire un mapping sur le nom des champs d'une table et non sur l'ordre.

    Je m'explique je voudrais insérer dans une table destination (se trouvant dans une base de données de test) un record d'une table source (se trouvant dans une base de données de type "copie production") à l'aide de la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT INTO TABLE SELECT * FROM TABLE@SOURCE WHERECLAUSE
    Le probléme est que l'ordre des colonnes peut être différent dans les deux tables et donc je voudrais savoir si il n'y pas un paramétre qui permettrait de spécifier un mapping sur le nom des champs...

    je sais qu'une solution est de spécifier le nom des colonnes dans la requête mais je voudrais pouvoir le faire sans.

    merçi

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Non seulement il y a un paramètre, mais c'est ce qu'il faudrait TOUJOURS faire !!!! ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO MaTable (Col1, Col2, Col3) VALUES (1, 2, 3);
    INSERT INTO MaTable (Col1, Col2, Col3) SELECT Col1, Col23, To_NUMBER(Col4) FROM MonAutreTable where Col25 like 'TOTO%';
    Ceci étant, une recherche dans la doc ou dans des tutoriels SQL aurait du vous permettre de trouver ! ;-)

  3. #3
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je pense qu'il veut dire qu'il voudrait faire ça sans devoir spécifier les champs.

    Oui tu peux mais seulement en utilisant du SQL dynamique, donc pas en une seule bête requête mais avec une procédure PL/SQL. Ca te suffirait ?

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par nuke_y
    Je pense qu'il veut dire qu'il voudrait faire ça sans devoir spécifier les champs.

    Oui tu peux mais seulement en utilisant du SQL dynamique, donc pas en une seule bête requête mais avec une procédure PL/SQL. Ca te suffirait ?
    ok, mais il parle de
    Le probléme est que l'ordre des colonnes peut être différent dans les deux tables et donc je voudrais savoir si il n'y pas un paramétre qui permettrait de spécifier un mapping sur le nom des champs...
    Alors un paramètre sur le nom des champs sans nommer les champs............ ça me semble pas clair !!!

  5. #5
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    En gros je pense qu'il veut savoir si c'est possible de faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TABLE SELECT * FROM TABLE@SOURCE WHERE CLAUSE /*+ USE COLUMN NAME MAPPING */
    mais à ma connaissance non, la BDD se base par défaut sur la position des colonnes et ne construit pas un mapping à la volée en regardant les noms.

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par nuke_y
    En gros je pense qu'il veut savoir si c'est possible de faire un truc comme ça :
    Code:
    INSERT INTO TABLE SELECT * FROM TABLE@SOURCE WHERE CLAUSE /*+ USE COLUMN NAME MAPPING */
    mais à ma connaissance non, la BDD se base par défaut sur la position des colonnes et ne construit pas un mapping à la volée en regardant les noms.
    C'est bien cela que je voulais savoir...
    Ben il me reste plus qu'a indiquer le nom de colonne dans ma procédure qui me génére ce type de requête

    Meçi à vous

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2014, 13h23
  2. Réponses: 2
    Dernier message: 01/06/2011, 12h14
  3. Réponses: 2
    Dernier message: 05/08/2008, 16h43
  4. Trier sur une valeur de champs et non sur le nom du champs
    Par kamalkam dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/05/2006, 17h41
  5. comment recuperer le nom des champs ?????
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h00

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