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 Firebird Discussion :

Valeur NULL pour dates différentes entre IB et Firebird


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Valeur NULL pour dates différentes entre IB et Firebird
    Bonjour,

    J'essaie, dans une procédure stockée, de passer une date en output... Certaines fois, il n'y a pas de date, donc j'aimerais bien mettre la valeur NULL ou une string vide.

    En IB, je peux mettre une string vide mais pas la valeur NULL.
    En Firebird, je peux mettre NULL mais pas la string vide.

    Est-ce que quelqu'un connais un moyen unique pour que cela fonctionne sur les 2 types de bases ????

    Merci d'avance !

    Alex

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Un parametre de retours ne peut être à la fois de type DATE et de type string (enfin quand vous parlez de string j'imagine que vous pensez VARCHAR ou CHAR, car string n'existe pas sous interbase ni sous firebird).

    De plus je ne sais pas ce qui vous a ammené à cette conclusion, car il est tout à fait possible et ce dans les deux SGBD de renvoyer null pour un paramétre de sortie d'une PS et ce que le type de ce paramètre soit DATE ou CHAR ou VARCHAR ou autre ...

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Je comprends pas vraiment ou il est le problème.

    D'après ce que tu dis, t'as une paramètre retour de type date qui peux très bien prendre la valeur null s'il n'y a pas de valeur (parv ex le resultat d'une select qui est vide).
    Pour plus de clarté peux tu poster le code de ton ps ?

    A+

  4. #4
    Candidat au Club
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Si je pose la question, c'est bien que j'ai un problème...

    Bref...

  5. #5
    Candidat au Club
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui, merci à Andry qui lui au moins essaie de m'aider !

    En fait un des bout de mon code qui fait erreur est le suivant (en simplifié) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT '', LIBELLE, DEBIT, CREDIT, SOLDE
       FROM ECRITURES
        INTO :DATE_ECR, LIBELLE, DEBIT, CREDIT, SOLDE;
    Ici, en Interbase 6, cela passe sans problème, par contre avec Firebird 1.5, j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    conversion error from string ''''.

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Citation Envoyé par blecalex4
    Oui, merci à Andry qui lui au moins essaie de m'aider !

    En fait un des bout de mon code qui fait erreur est le suivant (en simplifié) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT '', LIBELLE, DEBIT, CREDIT, SOLDE
       FROM ECRITURES
        INTO :DATE_ECR, LIBELLE, DEBIT, CREDIT, SOLDE;
    Ici, en Interbase 6, cela passe sans problème, par contre avec Firebird 1.5, j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    conversion error from string ''''.
    Pas de quoi.
    Sinon, je vois une erreur dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT '', ...
        INTO :DATE_ECR ...;
    Je ne comprends pas bien le '' dans ce select et en plus tu le reafecte à DATE_ECR que j'imagine l'une des paramètres retournées.
    Est ce une erreur de frappe ?

    A+

  7. #7
    Candidat au Club
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Non,

    c'est en fait ce que je veux retourner, un varchar vide pour qu'il n'y ait pas de valeur de date...

    Avec Interbase 6, cela s'affiche comme null dans l'onglet Results d'IBExpert.

    Par contre avec Firebird 1.5, cela fonctionne si je mette NULL à la place de ''. Si je met '', cela ne fonctionne pas !

  8. #8
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Et c'est koi l'interet du select alors si tu veux que DATE_ECR soit tjs null.
    pourquoi ne pas affacté à DATE_ECR la valeur null.

    A+

  9. #9
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par blecalex4
    Si je pose la question, c'est bien que j'ai un problème...

    Bref...
    Je comprend bien et c'est bien la seule chose que je comprend, vous avez un probleme.

    Seulement voilà faut il que vous fassiez un effort pour expliquer précisément votre probleme.

    Car aucunne réponce ne peut être donnée au vu de votre premier message. Je n'ai donc fait que vous reprendre sur les imprecésions de votre description du probleme.

    Voilà.

    Maintenant si vous souhaitez être aidé et avoir des réponses interressantes ayez la politesse envers tous ceux qui passent du temps à aider les autres de bien décrire votre probleme.

    Au vu des messages suivants je n'ai pas l'impression que vous faites des procédures stockées comme vous le dites dans votre premier message...

    De plus Vous parlez de date puis après de string ?? quel est le rapport entre les deux sachant que string n'existe pas sous Interbase ?

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par blecalex4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT '', LIBELLE, DEBIT, CREDIT, SOLDE
       FROM ECRITURES
        INTO :DATE_ECR, LIBELLE, DEBIT, CREDIT, SOLDE;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    conversion error from string ''''.
    C'est normal, simplement interbase était plus tolérant sur le casting de chaines de caractère en date.

    Mais vous confondez chaine vide avec NULL, ce qui n' a rien à voir...
    Faire ce que vous faites revient à laisser le SGBD à choisir à votre place la valeur qu'il va affecter ' ' n'est pas traductible en date donc il peux choisir 1 de générer une exeption (le choix de firebird) ou 2 de convertir en date et prendre la 1ere date possible (17 Novembre 1858) ou dernière possibilité mettre à NULL si c'est possible.

    Donc autant décider vous meme de ce que vous allez mettre dans votre date...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NULL, .... FROM...
    INTO :MA_DATE,...
    Mais comme le fait remarqué Andry quel est l'interret de renvoyer en DUR toujours NULL ??
    Et si vous êtes dans une procédure stockée pourquoi le mettre dans un select ? Un simple
    suffisait.

    Voilà une réponse un peu plus constructive.

    En conclusion si vous avez que des réponses de mauvaises qualitées ou qui ne vous conviennent pas remettez vous en question a savoir si vous de votre coté vous avez bien décrit votre problême.

    Cordialement

    NB : sur mon interbase 6 le select suivant ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select cast('' as date) from RBD$DATABASE;
    Il génère bien une exception contrairement à ce que vous dites. J'ai du coup essayé dans une PS pour voir si le comportement est différent mais ce n'est pas le cas... J'essayerai sous firebird à l'occasion...

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

Discussions similaires

  1. Insertion d'une valeur null pour une colonne
    Par bigggalll dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 24/03/2010, 15h01
  2. [MySQL] Format de date différent entre PHP et ASP
    Par lekev62 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2009, 12h36
  3. Attribuer valeur null à une date
    Par bobosh dans le forum VBA Access
    Réponses: 7
    Dernier message: 27/08/2008, 15h53
  4. Valeur null pour un champ bigint
    Par bimus dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 22/01/2007, 15h28
  5. donner une valeur nulle pour une liste déroulante
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 15/10/2006, 15h45

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