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

InterBase Discussion :

udf, param,DataType Unknown


Sujet :

InterBase

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut udf, param,DataType Unknown
    Bonjour,

    j'ai une requête dont je constitue la clause where à l'exécution.
    Elle contient des paramètres et des udf.
    Quand les paramètres ne sont pas utilisés comme argument d'une udf, ça
    passe.
    Quand les paramètres sont utilisés en argument d'une udf (que ce soit une à moi, ou un bête ABS(champ - :param), ça ne passe pas.

    En isql je ne réussis pas à la faire marcher : DataType Unknown.

    A l'exécution, je crée la requête et renseigne le type de chaque paramètre à
    l'avance. Au prepare, ça plante

    il semble que Henri Cesbon Lavau le 27.09.2000 22:50:25
    39d25d6f.0@leia.vienneinfo.org
    ait eu un pb similaire et l'ait résolu. Mais il ne dit pas comment.

    Si quelqu'un peut m'éclairer ?

    François
    --
    François TROMPAT
    KALAB'S SYSTEM 6, rue Arthur Robert 04100 MANOSQUE

  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
    Je ne crois pas que celà vienne du fait que se soit une requete dynamique mais plutot du fait qu'elle soit paramétrée.
    Il faudrait essayer de typer le paramètre, il me semble que c'est possible.

    Sinon au pire il ne faut pas utiliser de paramètre quand c'est pour les UDF.

    Donc constituer la clause where dynamiquement là ca devrait fonctionner.

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse

    J'ai bien tenté de typer le paramètre, mais j'ai toujours le pb

    Je cherche si qq'1 à réussi à utiliser un paramètre avec une udf sous IB
    --
    François TROMPAT
    KALAB'S SYSTEM 6, rue Arthur Robert 04100 MANOSQUE

  4. #4
    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
    J'ai testé en mode SQL dynamique ça fonctionne bien alors qu en effet en mode SQL paramétré, il y a un PB. Quand j'aurai plus de temps je regarderai. Ceci dit il y a plein de moyen de contourner le PB :
    1-Faire du SQL dynamique
    2-réclamer le résulat de l'UDF séparément et du coup le paramétre contient déjà le calcul de l'UDF. Celà implique que l'on fasse un appel au serveur (pas terrible) ou que l'on puisse appeler l'UDF directement du programme (mieux mais celà implique que l'UDF soit installée sur les postes clients).

    Mais s'il y a une réponse autre que le contrournement du problème, ça serait interressant de savoir....

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Résolu] : UDF et requête paramétrée
    Bonjour :
    - à ceux qui aiment bien que je me réponde à moi-même !
    - et aux autres qui aiment bien les réponses

    J'ai tagué (?) résolu, mais il vaut mieux lire contourné

    Il semble impossible de faire une requête dans IB, utilisant des udf dont un paramètre est un paramètre SQL. Dit autrement, il semble impossible de faire une requête paramétrée sous IB, quand le paramètre est un argument de l'udf.
    exemple de ce qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        select * from matable where ABS(:PARAM) < Monchamp
    Le contournement que j'ai trouvé :
    encapsuler l'udf dans une procédure stockée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE PSABS( MAVALEUR INTEGER)
    RETURNS (RESULTAT INTEGER)
    AS BEGIN 
      RESULTAT = ABS(MAVALEUR );
      SUSPEND;
    END
    remplacer l'appel à l'udf par un select sur la PS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( SELECT  RESULTAT  FROM PSABS(:PARAM) )
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where ( SELECT  RESULTAT  FROM PSABS(:PARAM) ) < Monchamp
    en espérant que ça aide

    François
    --
    François TROMPAT
    KALAB'S SYSTEM 6, rue Arthur Robert 04100 MANOSQUE

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

Discussions similaires

  1. declare @param as datatype
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/11/2009, 14h02
  2. Probléme avec UDF D6 et IB6
    Par Houben Jacques dans le forum InterBase
    Réponses: 9
    Dernier message: 30/07/2003, 14h26
  3. Recuperation du source d'une page - envoi de param
    Par ulysse66x dans le forum Web & réseau
    Réponses: 3
    Dernier message: 15/06/2003, 17h31
  4. Ouvrir fenêtre avec param
    Par Saber22 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/05/2003, 15h48
  5. {$PARAM} dans XMLGRAM
    Par rgarnier dans le forum XMLRAD
    Réponses: 3
    Dernier message: 31/01/2003, 12h42

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