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 :

Requête paramétrée Oracle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut Requête paramétrée Oracle
    Salut !

    Je développe une application en asp.net/c# et j'utilise une BDD oracle.

    J'ai un petit souci avec une requête paramétrée dans une méthode : je souhaite récupérer les comptes dont le nom est composé d'une partie de la chaîne passée en paramètre à la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom = %:partiedenom% "
    Bien sûr, Oracle me renvoie une erreur ORA-00911: Caractère non valide. Je vois bien que ça vient de l'utilisation de '%' et je ne vois pas quelle syntaxe utiliser. Il doit manquer des cotes ou un truc dans le genre...

    Merci pour votre aide !

    Alex

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    En rajoutant des ' ' je n'ai plus l'erreur Oracle par contre, la requête ne me renvoi aucun résultat pour la partie de nom que je passe en paramètre à la méthode alors qu'un enregistrement dans la BDD correspond...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom = '%:partiedenom%' "
    La syntaxe ne doit pas être si correcte que ça je pense...

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    J'ai testé la requête sous SQL+ et elle fonctionne ! En effet la syntaxe était pas tout à fait exacte (= à remplacer par LIKE)

    Voici la requête exécutée sous SQL+ qui me retourne le bon compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from compte where nom like '%TEC%';
    Par contre dans le code, aucun résultat renvoyé

  4. #4
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,
    La variable "partiedenom" n'est pas interprétée dans la chaine passée à Oracle !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom like '%"&:partiedenom&"%' "
    A la syntaxe du "&" prêt, "&" étant supposé être l'opérateur de concaténation de chaine de votre langage

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    Bonjour !

    Merci pour votre réponse.

    L'opérateur de concaténation en C# est "+" et j'ai testé votre solution mais ça ne fonctionne pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom like '%" + :partiedenom + "%' "
    partiedenom n'est pas une variable mais un paramètre créé de la manière suivante (désolé c'est du C# et on est sur le forum Oracle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IDbParametersBuilder builder = CreateDbParametersBuilder();
    builder.Create().Name("partiedenom").Type(DbType.StringFixedLength).Value(nom);
    Le paramètre s'utilise comme ceci après dans la chaîne (cette requête fonctionne parfaitement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom like :partiedenom"
    Par contre moi je souhaite tester sur une partie du nom (d'ou l'utilisation de %), mais pas moyen !

    J'ai trouvé une solution qui marche (sans le paramètre) mais bon c'est encore du C# donc je ne vais pas abuser non plus !

  6. #6
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    ok désolé,
    Alors cela devrait peut-être fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT * FROM compte WHERE nom like '%'||:partiedenom||'%'"

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

Discussions similaires

  1. [Débutant] Requêtes Paramétrés (Oracle)
    Par shaun_the_sheep dans le forum C#
    Réponses: 3
    Dernier message: 05/10/2012, 11h30
  2. [Oracle 10g]Requête paramétrée
    Par peuplier dans le forum SQL
    Réponses: 6
    Dernier message: 02/04/2009, 09h36
  3. Réponses: 3
    Dernier message: 12/12/2008, 08h05
  4. [ADO.NET Oracle] Requête paramétrée en C# qui refuse de s'exécuter
    Par NeraOne dans le forum Accès aux données
    Réponses: 9
    Dernier message: 11/05/2007, 17h50
  5. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50

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