Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 14h03   #1
Invité de passage
 
Homme Jean-Marc DUVAL
Consultant informatique
Inscription : mars 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marc DUVAL
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 7
Points : 1
Points : 1
Par défaut Est-il possible d'utiliser une fonction utilisateur (UDF) avec un requêteur se connectant à DB2 ?

Bonjour,

J'aimerai savoir s'il est possible d'utiliser une fonction utilisateur définie dans DB2 (iSeries V5R3) dans un logiciel de requête window (j'utilise QUERY SHOWCASE) et si oui, y a t'il des manipulations à faire ?
Dans les tests que j'ai pu effectuer, seul les fonctions classiques étaient utilisables (MIN(), MAX(), SUM(), etc...).
jévolue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 14h22   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Aucun problème, il faut juste t'assurer qu'il trouvera la fonction dans la *LIBL si tu utilises la convention *SYS ou dans le schéma courant si tu utilises la convention *SQL.
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h09   #3
Invité de passage
 
Homme Jean-Marc DUVAL
Consultant informatique
Inscription : mars 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marc DUVAL
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 7
Points : 1
Points : 1
Je n'y arrive pas

- J'ai utilisé dans la requête, une table dans le même shéma que la fonction.
- J'ai mis la fonction dans une bibliothèque de la QUSRLIBL.
- J'ai fais une fonction plus simple sans traitement de table -ADD(int1, int2)-.
- J'ai utilisé la syntaxe iseries et SHOWCASE -ADD(int1; int2)-.

Et dès que j'essai de créer la colonne qui contient la fonction dans SHOWCASE, j'ai systématiquement :
Citation:
L'analyseur a rencontré une erreur de syntaxe au niveau ou à proximité du jeton : (
Je n'ai plus d'idée...
jévolue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h31   #4
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Le message d'erreur n'est pas clair du tout.

1) Poste ta fonction
2) La requête qui appelle qui appelle la fonction

ps : le séparateur de valeurs à l'appel d'une fonction c'est la virgule
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 09h03   #5
Invité de passage
 
Homme Jean-Marc DUVAL
Consultant informatique
Inscription : mars 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marc DUVAL
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 7
Points : 1
Points : 1
Voici le script de création de la fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
CREATE FUNCTION ZAGRALYS/PRIXBASE
     (                           
     DOMAINE  VARCHAR( 3),       
     TARIF    VARCHAR( 5),       
     DEVISE   VARCHAR( 3),       
     SOCIETE  VARCHAR( 3),       
     TIERS    VARCHAR( 9),       
     PRODUIT  VARCHAR(10),       
     DATEAPPLI DECIMAL(8,0)      
     )                           
RETURNS DECIMAL(13, 4)           
LANGUAGE SQL                     
SPECIFIC ZAGRALYS/PRIXBASE       
NOT DETERMINISTIC                
READS SQL DATA                   
CALLED ON NULL INPUT             
RETURN (                         
     SELECT A.ATRVDE             
     FROM AATARIL2 AS A          
     WHERE A.ATRCDO = DOMAINE    
       AND A.ATRCIN = TARIF      
       AND A.ATRCIN = TARIF         
       AND A.ATRCDE = DEVISE        
       AND A.ATRSOC = SOCIETE       
       AND A.ATRTIE = TIERS         
       AND A.ATRNTA = 'T'           
       AND A.ATRNI1 = 'bbb'         
       AND A.ATRNI2 = 'bbb'         
       AND A.ATRNI3 = 'bbb'         
       AND A.ATRNI4 = 'bbb'         
       AND A.ATRCPO = PRODUIT       
       AND A.ATRGEN = 'bb'          
       AND A.ATRTRA = 'bbbbb'       
       AND A.ATRSAC = 'bbbbb'       
       AND A.ATRZON = '150 blancs'             
       AND A.ATRDDA =               
           (                        
           SELECT MAX (B.ATRDDA)    
           FROM AATARIL2 AS B       
           WHERE B.ATRCDO = A.ATRCDO
             AND B.ATRCIN = A.ATRCIN
             AND B.ATRCDE = A.ATRCDE
             AND B.ATRSOC = A.ATRSOC
             AND B.ATRTIE = A.ATRTIE
             AND B.ATRNTA = A.ATRNTA
             AND B.ATRNTA = A.ATRNTA  
             AND B.ATRNI1 = A.ATRNI1  
             AND B.ATRNI2 = A.ATRNI2  
             AND B.ATRNI3 = A.ATRNI3  
             AND B.ATRNI4 = A.ATRNI4  
             AND B.ATRCPO = A.ATRCPO  
             AND B.ATRGEN = A.ATRGEN  
             AND B.ATRTRA = A.ATRTRA  
             AND B.ATRSAC = A.ATRSAC  
             AND B.ATRDDA <= DATEAPPLI
             AND B.ATRDAS = 0         
           )                          
       AND A.ATRDAS = 0               
       )                              
;
En SQL interactif sur l'iSeries, le select suivant fonctionne parfaitement :

Code :
1
2
3
SELECT APRCPR, APRLPR, 
PRIXBASE('APP', 'PAAbb', 'EUR', 'bbb', 'bbbbbbbbb', APRCPR, 20110321) 
FROM aaprodp
Alors que sur QUERY SHOWCASE, il me met le message d'erreur
Citation:
L'analyseur a rencontré une erreur de syntaxe au niveau ou à proximité du jeton : (
dès que je veux créer la colonne avec la fonction PRIXBASE (cf copie d'écran jointe).
Images attachées
Type de fichier : jpg AnoPrixBase.JPG (157,1 Ko, 4 affichages)
jévolue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 15h30   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Essaie de passer par des variables en y mettant dedans les valeurs que tu passes en dur à la fonction. Ensuite, mets les variables à la place des valeurs dans le coding de la fonction.

Résultat sans aucune garantie.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 09h08   #7
Invité de passage
 
Homme Jean-Marc DUVAL
Consultant informatique
Inscription : mars 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marc DUVAL
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 7
Points : 1
Points : 1
Et non, ça ne marche pas non plus avec les valeurs en variable...
On a vraiment l'impression que c'est sur PRIXBASE qu'il butte.
Je n'ai pas l'impression qu'il va vérifier s'il existe une fonction sur l'iSeries : pas de temps de latence, la fenêtre d'erreur de syntaxe est instantanée.
jévolue est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web