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 :

[ORACLE 9] Paramètres de requête


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut [ORACLE 9] Paramètres de requête
    Bonjour,

    Je souhaiterais permettre la saisie de paramètre avant l'exécution d'une requête. Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    define f = 60;
    define g = 90;
    select &f - &g from dual;
    Résultat :
    old: select &f - &g from dual
    new: select 60 - 90 from dual
    60-90
    ----------
    -30

    Le souci que je rencontre, c'est que je n'arrive pas à définir des paramêtres de dates. Existe-t-il un moyen de les typer ?

    Merci beaucoup pour votre aide.

    JPG

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    define f = '01/02/2010';
    define g = '01/01/2010';
     
    SELECT to_date(&f, 'dd/mm/yyyy') - to_date(&g, 'dd/mm/yyyy')
      FROM dual;

  3. #3
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut
    Merci pour ta réponse.
    Cependant, en exécutant ton script, j'obtiens le message d'erreur suivant :

    ORA-01858: a non-numeric character was found where a numeric was expected

    La définition des paramètres fonctionne pour les types Number, Varchar, mais je ne trouve pas la solution pour les dates.

    Merci encore.

    JPG

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par jpg75014 Voir le message
    La définition des paramètres fonctionne pour les types Number, Varchar, mais je ne trouve pas la solution pour les dates
    Ah, j'aimerais bien voir un exemple qui marche avec une chaîne de caractères !

    Le souci que vous avez, c'est que lors de la définition de variables de substitution avec DEFINE, les apostrophes sont ignorées.
    A l'exécution, après les substitution, ça produit une commande invalide, parce qu'il manque les apostrophes autour des dates ou des chaînes de caractères.

    Regardez bien votre SELECT après la substitution des variables par leur valeur :
    to_date(01/02/2010, 'dd/mm/yyyy')

    Si vous ajoutez les apostrophes dans le SELECT autour du &f et &g, ça rentre dans l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT to_date('&f', 'dd/mm/yyyy') - to_date('&g', 'dd/mm/yyyy')
      FROM dual;

  5. #5
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut
    En effet, ça marche avec les ' autour des &f et &g.

    Je considère donc ce post comme résolu et vous remercie beaucoup pour votre aide.
    Même si l'utilisation de ce script désormais, me fournit des formats de chiffres qui ne me conviennent plus (alors qu'ils me convenaient lorsque j'exécutais la requête, --> j'utilise Toad 9.5.0.31)

    Le résultat me donne -1.017E+08 au lieu de -101662944,04 soit une différence de 37 K€ (tout de même).

    Faut-il forcément passer par un script ? Ou faut-il que je créé un nouveau post pour demander comment forcer le format de mes nombres ?

    Merci encore pour votre aide.

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par jpg75014 Voir le message
    Ou faut-il que je créé un nouveau post pour demander comment forcer le format de mes nombres ?
    Oui, à question différente, nouveau sujet !

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

Discussions similaires

  1. [D2010][Oracle 10g] Paramètre de requête avec DBExpress
    Par Lung dans le forum Bases de données
    Réponses: 8
    Dernier message: 26/02/2010, 13h37
  2. Réponses: 2
    Dernier message: 28/04/2006, 10h40
  3. Réponses: 2
    Dernier message: 03/02/2006, 14h12
  4. [Struts]Adresse et paramètre(s) requête précédente
    Par tartanfion dans le forum Struts 1
    Réponses: 4
    Dernier message: 24/08/2005, 08h27
  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