Probleme retour parametre DB2 SQL PL
Probleme retour parametre DB2 SQL PL
Bonjour,
j'ai créé une fonction en SQL PL mais les variables chaines me posent un problème quand elle viennent d'un select.
Cordialement,
BEGIN ATOMIC
DECLARE CHAINE CHAR ( 20 ) DEFAULT '/' ;
DECLARE CODE CHAR ( 4 ) ;
DECLARE EOF INTEGER DEFAULT 0 ;
DECLARE C1 CURSOR FOR SELECT CODE FROM TTOXE WHERE REF = REFERENCE ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET EOF = 1 ;
OPEN C1 ;
FETCH FROM C1 INTO CODE ;
WHILE EOF = 0 DO
SET CHAINE = TRIM ( CHAINE ) CONCAT TRIM ( CODE ) ;
FETCH FROM C1 INTO CODE ;
END WHILE ;
CLOSE C1 ;
RETURN CHAINE ;
END
j'ai créé une fonction en SQL PL mais les variables chaines me posent un problème quand elle viennent d'un select.
Cordialement,
BEGIN ATOMIC
DECLARE CHAINE CHAR ( 20 ) DEFAULT '/' ;
DECLARE CODE CHAR ( 4 ) ;
DECLARE EOF INTEGER DEFAULT 0 ;
DECLARE C1 CURSOR FOR SELECT CODE FROM TTOXE WHERE REF = REFERENCE ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET EOF = 1 ;
OPEN C1 ;
FETCH FROM C1 INTO CODE ;
WHILE EOF = 0 DO
SET CHAINE = TRIM ( CHAINE ) CONCAT TRIM ( CODE ) ;
FETCH FROM C1 INTO CODE ;
END WHILE ;
CLOSE C1 ;
RETURN CHAINE ;
END
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
un message d'erreur ???
Franchement, si vous ne nous dites pas quel est le problème (code erreur, libellé du message, etc...), on va avoir du mal à vous répondre....
Christian Massé (Volubis.fr)
(sans texte)
Bonjour,
Il n' y a pas de message ou de code erreur(à moins que je cherche au mauvais endroit)
il y a deux cas s'il existe des enregs alors on a un -
sinon / comme résultat.
Cordialement,
Il n' y a pas de message ou de code erreur(à moins que je cherche au mauvais endroit)
il y a deux cas s'il existe des enregs alors on a un -
sinon / comme résultat.
Cordialement,
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
val. nulle
Normalement le "-" représente la valeur nulle.
Il y a-t-il des valeurs nulles dans la base ?
Il y a-t-il des valeurs nulles dans la base ?
Christian Massé (Volubis.fr)
(sans texte)
Il n'y a pas de valeur nulle dans la base.
pour le test, il y a 2 enregs seulement.
c'est peut être cette syntaxe qui ne va pas
SET CHAINE = TRIM ( CHAINE ) CONCAT TRIM ( CODE ) ;
le while fonctionne bien j'ai compté le nbre de passage (2).
On dirait que le champs CODE (4 caractères alpha) lui pose problème.
j'ai du mal a trouvé de la doc sur DB2 SQL PL !!!!
Manae
pour le test, il y a 2 enregs seulement.
c'est peut être cette syntaxe qui ne va pas
SET CHAINE = TRIM ( CHAINE ) CONCAT TRIM ( CODE ) ;
le while fonctionne bien j'ai compté le nbre de passage (2).
On dirait que le champs CODE (4 caractères alpha) lui pose problème.
j'ai du mal a trouvé de la doc sur DB2 SQL PL !!!!
Manae
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
???
J'ai recréé la fonction avec ce code là
L'instruction
m'affiche
?????
Code : Tout sélectionner
CREATE FUNCTION AF4TEST.LISTE (
REFERENCE DECIMAL(1, 0) )
RETURNS CHAR(20)
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
BEGIN ATOMIC
DECLARE CHAINE CHAR ( 20 ) DEFAULT '/' ;
DECLARE CODE CHAR ( 4 ) ;
DECLARE EOF INTEGER DEFAULT 0 ;
DECLARE C1 CURSOR FOR SELECT CODE FROM AF4TEST . TTOXE WHERE REF = REFERENCE ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET EOF = 1 ;
OPEN C1 ;
FETCH FROM C1 INTO CODE ;
WHILE EOF = 0 DO
SET CHAINE = TRIM ( CHAINE ) CONCAT TRIM ( CODE ) ;
FETCH FROM C1 INTO CODE ;
END WHILE ;
CLOSE C1 ;
RETURN CHAINE ;
END ;
Code : Tout sélectionner
values AF4TEST.liste(0);
Code : Tout sélectionner
/AABBCC
Christian Massé (Volubis.fr)
(sans texte)
Bonjour,
le fichier contient une valeur référence(7,0) et un code(4)
le but de la fonction est de concaténer le champs code pour une référence donné dans une chaine de 20 caractères.
apparemment ça à l'air de fonctionner chez vous.
vous avez précisé la bibliothèque pour le fichier (pas moi), je ne sais pas si cela à un lien ???!!!
j'utilise iserie Navigator pour créé la fonction.
Cordialement.
le fichier contient une valeur référence(7,0) et un code(4)
le but de la fonction est de concaténer le champs code pour une référence donné dans une chaine de 20 caractères.
apparemment ça à l'air de fonctionner chez vous.
vous avez précisé la bibliothèque pour le fichier (pas moi), je ne sais pas si cela à un lien ???!!!
j'utilise iserie Navigator pour créé la fonction.
Cordialement.
(sans texte)
Bonjour,
Un nouveau test, j'ai rajouté, comme vous, la bibliothèque et ça marche !!!!
y a t il un autre moyen que iserie Navigator pour créé des fonctions ?
Cordialement,
Manae
Un nouveau test, j'ai rajouté, comme vous, la bibliothèque et ça marche !!!!
y a t il un autre moyen que iserie Navigator pour créé des fonctions ?
Cordialement,
Manae
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
convention d'appellation
j'ai créé une table sans doute assez proche
L'absence de qualification est une bonne piste, voici la règle :
SI la convention d’appellation en cours est *SYS, SQL utilise *LIBL
Si la convention d'appellation est *SQL, SQL cherche une bibliothèque portant le NOM de l'utilisateur (OWNER)
Sous Sytem i Navigator, la convention s'indique sous Connexion/paramètres JDBC/Onglet Format
Code : Tout sélectionner
CREATE TABLE AF4TEST.TTOXE (
REF DECIMAL(1, 0) DEFAULT NULL ,
CODE CHAR(4) CCSID 297 DEFAULT NULL )
RCDFMT TTOXE ;
SI la convention d’appellation en cours est *SYS, SQL utilise *LIBL
Si la convention d'appellation est *SQL, SQL cherche une bibliothèque portant le NOM de l'utilisateur (OWNER)
Sous Sytem i Navigator, la convention s'indique sous Connexion/paramètres JDBC/Onglet Format
Christian Massé (Volubis.fr)