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 :

pb avec UDF


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut pb avec UDF
    bonjour,

    Après avoir exécuté le script "IB_UDF.sql' sous IB6.0, je souhaite executer la requete :
    "select SUBSTR('test',1,2) from MyTable where Cle=1", et j'ai toujours la même erreur : "Invalid request BLR at offset ...".

    Pourtant, si j'utilise d'autres fonctions comme LTRIM, cela fonctionne correctement.


    Une Idée ???

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Lors de l'execution du script, il n'y a pas eut d'erreur ?

    Essayer de redéclarer la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION substr 
        CSTRING(80), SMALLINT, SMALLINT
        RETURNS CSTRING(80) FREE_IT
        ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    Non, aucune erreur à l'execution du script initial.

    En redeclarant la fonction, j'ai le message d'erreur :
    "DEFINE FUNCTION failed
    attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_9""
    Mais ça doit être parce que n'avait pas fait le "drop external ..." avant.

    Ne serait-ce par à cause du "FREE_IT" que je devrais affecter le résultat dans un variable ? (j'ai pas mal de pb avec la doc en anglais).

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    C'est quoi le message exact quand vous faites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select SUBSTR('test',1,2) from rdb$database
    ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    réponse :
    /*************************************************/
    Invalid request BLR at offset 63
    function SUBSTR is not defined
    module name or entrypoint could not be found
    Statement: select SUBSTR('test',1,2) from rdb$database
    /*************************************************/


    Si je fait la même chose dans la base de démo "data.gdb", cela fonctionne correctement. Le pb viendrait d'un paramètrage de la base différent ?
    La base de démo est en sql dialect 1 et la mienne en 3 !?!

  6. #6
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Non le free_it et le dialect n'ont rien à voir.

    Avez vous essayé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP EXTERNAL FUNCTION SUBSTR
    suivit du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION substr 
        CSTRING(80), SMALLINT, SMALLINT 
        RETURNS CSTRING(80) FREE_IT 
        ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
    ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    Oui, plusieurs fois mais rien n'y fait, toujours le même message d'erreur.

    Je continue à chercher les différences entre les 2 bases ...

  8. #8
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    J'ai déclaré cette fonction sur une base de test et je n'ai pas ce probleme.

    et si vous essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION MASUBSTR 
        CSTRING(80), SMALLINT, SMALLINT 
        RETURNS CSTRING(80) FREE_IT 
        ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MASUBSTR('test',1,2) from rdb$database

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    ben ... ça fonctionne avec MaSubStr !?!

    Pourquoi pas avec SubStr ???

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Et bien je suppose qu'il y a eut un PB lors de la déclaration de substr.
    Le drop n a pas l'air de faire completement de menage et donc l'erreur subsiste.

    Je pense qu'un drop puis un backup/restore puis une redéclaration de substr devrait remettre tout ca dans l'ordre.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    Je n'arrive pas à restorer la base correctement mais la solution devrait être là ...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Par défaut
    Bon, après une lamantable bataille de Backup/Restore, j'ai finalement trouvé qu'un table avait un champ Integer en not null, mais que certaines valeurs étaient à null. Pour information, IBConsole renvoie "0" à la place de null : pas cool
    J'ai donc réussi, après avoir corrigé ce problème, le Backup/Restore, puis j'ai refait le test et celà fonctionne correctement.

    MERCI BEAUCOUP.

    Je tenais à te remercier pour ce formidable coup de pouce (j'espère que t'es payé pour ça ;-) ), sinon, j'adore les mecs passionné comme toi.
    Quoi qu'il en soit, encore merci et bravo pour le coup de pouce et aussi pour la rapidité des réponses.

  13. #13
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Citation Envoyé par mabig
    j'espère que t'es payé pour ça
    Non c'est du bénévolat. Personne n'est payé ici pour répondre aux questions ou pour gérer le site/forum. Les pubs servent uniquement à payer les frais d'hébergement.

    Mon salaire est donc constitué uniquement des remerciements des personnes que j'aide. Parfois il a de mauvais payeurs mais ce n'est pas votre cas .
    Bon courage pour la suite.

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

Discussions similaires

  1. Pb avec une UDF sur firebird v1.5
    Par jeanafond dans le forum SQL
    Réponses: 7
    Dernier message: 20/05/2005, 17h29
  2. Runtime error avec UDF/DLL
    Par pram dans le forum SQL
    Réponses: 6
    Dernier message: 22/04/2005, 10h30
  3. Problème avec une UDF
    Par kanmaber dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/08/2004, 23h42
  4. PB d'installation d'UDF avec Win 2000/Win XP et IB 6.0.1
    Par Etienne Bar dans le forum InterBase
    Réponses: 11
    Dernier message: 28/05/2004, 10h39
  5. Probléme avec UDF D6 et IB6
    Par Houben Jacques dans le forum InterBase
    Réponses: 9
    Dernier message: 30/07/2003, 14h26

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