Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Mismatch between retrieve columns and fetch columns

#1 14-06-2010 10:10:14

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

[RESOLU] Mismatch between retrieve columns and fetch columns

Bonjour à tous,

Lors de l'exécution d'un curseur, j'ai le message suivant :
(Mismatch between retrieve columns and fetch columns)

A titre indicatif : j'ai mis la déclaration (DECLARE), l'ouverture du curseur (OPEN) et la fermeture (CLOSE) à l'extérieur de la boucle FOR, mais le (FETCH) à l'intérieur.

En fait, je voulais boucler sur les n lignes retrouvées pas le curseur.
J'ai trouvé ça sur le net mais, j'ai rien compris :

http://www.experts-exchange.com/Program … 34088.html

Quelqu'un a une idée.

Merci d'avance !

Dernière modification par mattdamon (14-06-2010 16:04:15)

Hors ligne

 

#2 14-06-2010 10:20:26

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Bonjour Matt,

Je pense qu'il va être difficile de se faire une idée
sans voir ton code.
A priori, le message indique que tu n'as pas mis dans le FETCH toutes les colonnes
récupérées de ton curseur, ou que les variables de FETCH sont d'un type
différent des colonnes de ton curseur.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 14-06-2010 10:38:32

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Bonjour foon,

Je crois pas que c'est un problème de nombre des colonnes ou de type.
voici le code :

Code: pb

 
DECLARE cursor CURSOR FOR  
  SELECT t1.col1, t1.col2, t2.col  
  FROM tab1 t1, tab2 t2
  WHERE t1.col3 = :as_port
  AND t1.col1 = t2.col; 
//l'ouverture du curseur
 OPEN cursor ; 
 SELECT count (t1.col1)  INTO :li_nb_col1
 FROM tab1 t1 where t1.col3 = :as_port;

//
FOR li_cpt = 1 TO li_nb_col1
   FETCH cursor INTO :ls_col1,:li_col2, :ls_col;
  //le traitement
NEXT

CLOSE cursor;


ls_col1 et ls_col sont string dans le code PB, VARCHAR2(16) et VARCHAR2(30) dans la table.

li_col2  : Integer dans le code PB et NUMBER(5) dans la table.

Hors ligne

 

#4 14-06-2010 10:48:16

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

juste pour info, tu n'as pas besoin du nb d'enregistrements pour boucler sur un curseur, tu peux utiliser sqlca.sqlcode :

Code: pb

OPEN emp_curs;

// Fetch the first row from the result set.
FETCH emp_curs INTO :emp_name_var;

// Loop through result set until exhausted.
DO WHILE SQLCA.sqlcode = 0

  // Display a message box with the employee name.
  MessageBox("Found an employee!",emp_name_var)

  // Fetch the next row from the result set.
  FETCH emp_curs INTO :emp_name_var;

LOOP

// All done, so close the cursor.
CLOSE emp_curs;

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 14-06-2010 10:54:42

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Ok avec erasorz, d'ailleurs son code est plus sûr.
Rien ne garantit que li_nb_col1 contienne le nombre de ligne de ton curseur.

D'autre part, les integer PB sont sur 2 octets.
Utilise long ou dec{0}.


never let people work on more than one thing at once.

Hors ligne

 

#6 14-06-2010 10:56:16

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

shahin a écrit:

D'autre part, les integer PB sont sur 2 octets.
Utilise long ou dec{0}.

Rien de plus à ajouter


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 14-06-2010 10:57:36

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Bonjour,

Ta requête possède un paramètre d'entrée que tu n'initialises jamais. Dans ton cas, Tu dois utiliser la syntaxe Sybase dite : Dynamic SQL Format 3 SQL statement
lorsque ta requête possède un paramètre d'entrée et produit un "result set".

Tu as tous les détails dans l'aide en ligne avec des exemples en recherchant sur la rubrique : Dynamic SQL Format 3 SQL statement.

Hors ligne

 

#8 14-06-2010 11:34:15

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

buck a écrit:

Bonjour,

Ta requête possède un paramètre d'entrée que tu n'initialises jamais. Dans ton cas, Tu dois utiliser la syntaxe Sybase dite : Dynamic SQL Format 3 SQL statement
lorsque ta requête possède un paramètre d'entrée et produit un "result set".

Tu as tous les détails dans l'aide en ligne avec des exemples en recherchant sur la rubrique : Dynamic SQL Format 3 SQL statement.

Merci à tous pour votre intervention, si j'ai bien compris ta réponse, je dois changer mon curseur en curseur dynamique c-à-d dois-je mettre ma mon select dans une chaine de caractère en suite  j'exécute mon curseur.

A+

Hors ligne

 

#9 14-06-2010 14:08:12

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Oui.

As-tu une raison particulière d'utiliser un curseur ? une datastore avec un retrievial arguments me paraît bien plus adaptée pour ton problème.

Hors ligne

 

#10 14-06-2010 14:18:37

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

buck a écrit:

As-tu une raison particulière d'utiliser un curseur ? une datastore avec un retrievial arguments me paraît bien plus adaptée pour ton problème.



ne jamais perdre de l'esprit que les DW/DS sont l'essence même de PB.
Il faut utiliser leur potentiel par défaut.
Sauf pour les qq (rares) cas où il faut utiliser autre-chose (curseur, SQL embarqué, dynamique,...)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 14-06-2010 15:51:16

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

buck a écrit:

Oui.

As-tu une raison particulière d'utiliser un curseur ? une datastore avec un retrievial arguments me paraît bien plus adaptée pour ton problème.

J'ai modifié la bariable li_col2 de Integer à Long et j'ai utilisé un curseur dynamique mais j'ai toujours le même message.

Bizarre!!!!

Dans mon cas, je dois utiliser un curseur

Hors ligne

 

#12 14-06-2010 16:03:51

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

Je l'ai trouvé, en fait, j'ai mis la CLOSE du curseur dans une  IF et le OPEN à l'extérieur de IF ==> donc un emssage d'erreur.

Pour la corriger, j'ai fermé le curseur à l'extérieur de IF.

Merci à tous !

Je vais mettre la discussion à RESOLU .

Hors ligne

 

#13 15-06-2010 17:10:48

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Mismatch between retrieve columns and fetch columns

mattdamon a écrit:

Je l'ai trouvé, en fait, j'ai mis la CLOSE du curseur dans une  IF et le OPEN à l'extérieur de IF ==> donc un emssage d'erreur.

Pour la corriger, j'ai fermé le curseur à l'extérieur de IF.

Merci à tous !

Je vais mettre la discussion à RESOLU .

D'où l'importance de poste le code utilisé si tu veux que l'aide soit optimale ... !!!


Face à l'agression, la puissance de l'intelligence

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Mismatch between retrieve columns and fetch columns

Pied de page des forums

Propulsé par FluxBB 1.2.22