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

Windows Forms Discussion :

Guillemets dans requête Oracle


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut Guillemets dans requête Oracle
    Bonjour,

    J'essaie de construire dynamiquement une requête.
    Je dois entourer entre guillemets l'alias des champs car cela n'est pas accepté avec de simples quotes.

    Comment doit-on faire ?

    Exemples testés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // 1ère Méthode :
    string aTextSql = "select titi as \"champ titi\" from toto";
     
    // 2ème Méthode :
    string aTextSql = @"select titi as ""champ titi"" from toto";
     
    // 3ème Méthode :
    StringBuilder strBuild;
    strBuild = new StringBuilder();
    strBuild.Append("select titi as \"champ titi\" from toto");
    Quand on affecte la propriété commandtext d'un objet OracleCommand (en vue de l'exécuter) avec la variable aTextSql ou strBuild.ToString(), le contenu de la chaine est tel que les alias de champ ne sont pas seulement entourés de guillemets ("), mais en fait de backslash-guillemets (\")

    ex :

    on obtient

    select titi as \"champ titi\" from toto

    au lieu de

    select titi as "champ titi" from toto

    et du coup, Oracle n'aime pas cela du tout !!!
    merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Edit : Oups, bêtise.

  3. #3
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Normalement, le debugger de Visual Studio te montrera peut-être ta chaine avec des \" mais elle contient réellement que des ".
    Donc pas de souci.
    J'ai jamais fait d'Oracle, (enfin je sechait les cours), mais entourer le nom des champs par des " me semble peu probable, tu es sur de toi ? Généralement on entour par des [ ] ou on met rien du tout, ou encore, dans MySQL c'est des `.
    Par contre, il est probable que ce qu'il aime pas c'est plutot le fait que tu ne spécifie ni table ni schema dans le nom de tes champs, et pas de schema dans le nom de la table.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Par défaut
    Son problème est sur les alias. Donc effectivement pour oracle il faut mettre des double quote. Cependant quel est ton besoin d'avoir des alias avec des espaces et quelle est l'erreur que tu obtiens ?
    Un dernier petit point : tu ne peux pas passer par des requêtes paramétrées plutôt que des chaînes concaténées ?

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Merci de ta participation ctxnop...mais

    1 - Oui, Oracle attend bien des guillemets " et non pas des simples quotes '
    Les guillemets sont nécessaires car il se peut qu'il y ait des espaces ou des mots clés dans les alias donnés aux champs.

    2 - L'utilisation des [ n'est pas à mon avis très usuelle...Je ne vois qu'Access et sa syntaxe SQL pour le moins non conventionnelle pour en faire l'utilisation...

    3- Je ne vois rien à ajouter dans une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select titi as "champ titi" from toto
    afin de pouvoir obtenir un résultat (cela marche ainsi sous SQL plus)

    4- Quand on visualise la chaine, elle est bien affichée...et son affectation dans un champ mémo ne fait pas apparaître les \
    Le débogueur interprête donc bien notre chaîne SQL, mais c'est à l'affectation de la propriété commandtext qu'il y a des \ polluant l'instruction SQL.

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Bonjour Karlus,

    Dans le cas précis, les requêtes ne sont pas vraiment constituées "en dur", mais sont générées automatiquement à partir d'un métamodèle (dictionnaire répertoriant les champs, libellés associés etc)...or, ces libellés utilisés en tant qu'alias sont susceptibles d'inclure des espaces et servent in fine à générer automatiquement des écrans de saisie (typiquement le texte du label devant la zone de saisie)

    Pour ce qui est de l'utilisation de requêtes paramétrées, je ne vois pas trop comment les utilisées dans ce cas précis.

    Comment ferais-tu ?

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Bonjour pvialatte,

    Pour info, on utilise Oracle Data Provider pour .NET (version Oracle 9)

    - Non, cela ne marche pas sans le as (c'est obligatoire pour utiliser un alias)

    - Oui, cela génère une Exception :
    ORA-01036: numéro/nom de variable interdit
    - Oui, cela marche sans ajouter les alias
    - Oui, cela marche aussi avec alias non entourés de guillemets dans la mesure où il n'y a pas d'espaces dans les noms d'alias et pas de mots clé en tant qu'alias, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MonChampTexte as texte from MaTable
    mais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MonChampDate as date from MaTable

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par Unusual Voir le message
    et du coup, Oracle n'aime pas cela du tout !!!
    C'est a dire ? Exception, pas de retour ???
    Si tu fais la meme requete sans as, est-ce que ca fonctionne ?
    Quel provider utilises-tu ?

    Normalement, le debugger de Visual Studio te montrera peut-être ta chaine avec des \" mais elle contient réellement que des "
    +1, la methode 1 doit marcher, la 3 aussi (la 2 ??)

    entourer le nom des champs par des " me semble peu probable
    Si, en plus, dans oracle, en natif, c'est vraiment des "...c'est des gens bizarres, ces gens d'oracle...En dehors de ca, la requete me sembe ok...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

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

Discussions similaires

  1. Problème avec des guillemets dans une requête
    Par clairetj dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/04/2011, 11h39
  2. Réponses: 2
    Dernier message: 30/11/2010, 08h21
  3. problème des guillemets dans une requête
    Par Smix007 dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/04/2007, 17h09
  4. Insérer le résultat d'une requête Oracle dans une table MS SQL
    Par Ninjazz dans le forum Accès aux données
    Réponses: 1
    Dernier message: 20/03/2007, 09h32
  5. Réponses: 6
    Dernier message: 09/11/2006, 14h19

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