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
[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:
select * from matable where ABS(:PARAM) < Monchamp
Le contournement que j'ai trouvé :
encapsuler l'udf dans une procédure stockée
Code:
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:
( SELECT RESULTAT FROM PSABS(:PARAM) )
ce qui donne
Code:
select * from matable where ( SELECT RESULTAT FROM PSABS(:PARAM) ) < Monchamp
en espérant que ça aide
François