|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 4 ![]() |
J'utilise des requetes SQL construites dynamiquement avec un curseur pour effectuer des recherches croisées complexes.
Parallelemnt, je souhaite connaitre le nb d'enregistrements résultants de ma requete. Et la... ça se corse ! Je n'arrive pas à obtenir le résultat dans une variable de mon pgm avec 'INTO :NbrErl' par exemple... j'obtiens une erreur à l'exécution SQL0312 : 'Variable NBRERL non définie ou non utilisable.' qq lignes de code : Eval requetec = 'Select Count(*) into :NbrErl' + requetec /EXEC SQL + PREPARE DYNSQL FROM :REQUETEc /END-EXEC /EXEC SQL + EXECUTE DYNSQL Merci |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Code :
ou encore, en SQL statique /EXEC SQL + Select Count(*) into :NbrErl + From ... + Where ... /END-EXEC Pour info, le nombre de lignes mises à jour, deletées, lues (fetch) ou insérées par une requête SQL se trouve dans la variable sqlerrd(3) de la SQLCA, mais malheureusement un select count(*) ne retournera jamais qu'une seule ligne. Cependant (et ça peut t'intéresser), la variable sqlerrd(3) peut contenir également le nombre estimé de lignes sélectionnées par PREPARE, c'est à dire que tu peux formuler directement ta requête par PREPARE et contrôler immédiatement le nombre estimé de lignes en retour, ce qui pourrait t'éviter de faire le count(*), toujours lourd en I-O. |
||
|
|
00
|
|
|
#3 | |||||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 4 ![]() |
Citation:
Citation:
Citation:
|
|||||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Je me suis effectivement trompé sur le "count(*) into ' + NbrErl + ... " mais tu ne couperas pas à une requête statique tel que je l'ai illustrée dans mon post précédent si tu continues à vouloir compter les lignes sans formuler ta requête.
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 4 ![]() |
C'est dommage... j'aurai au moins voulu comprendre le pourquoi
Pour le SQLERRD(3) il vaut toujours 0 à l'issue du PREPARE... |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Poutant, si je lis bien la doc SQL référencée ci-dessous à propos de sqlerrd(3) qui se trouve dans la Communication Area de SQL (SQLCA), je constate que
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com