Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Salut à tous !
J'ai une requête d'une cinquantaine de lignes à exécuter.
Je l'ai testée dans un programme java et j'obtiens le bon résultat.
Par contre, sous powerbuilder, elle ne passe pas.
Comme elle est composée de plusieurs imbrications de SELECT, je l'ai découpée et si j'enlève le SELECT qui englobe tout le reste, elle passe.
Est-ce que le nombre de SELECT imbriqués est limité sous Powerbuilder ?
Help !!
Hors ligne
Bonjour,
Quand tu dis qu'elle ne passe pas, qu'est ce que ça veut dire exactement ?
Quelle est la valeur de ton SQLCode ?
Hors ligne
En fait, juste après mon OPEN curseur, le SQLCA.sqlcode vaut -1.
Il ne veut pas ouvrir mon curseur !!
Hors ligne
C'est qu'il y a une erreur dans ta requête.
Tu as pensé à regarder du côté du SQLErrText ?
Hors ligne
Ya pas d'erreur dans ma requête !
Je l'exécute tel quel dans un programme java et le résultat est bon.
Et SQLErrText est vide...
Dernière modification par cradleofpain (15-05-2007 08:49:02)
Hors ligne
Peux-tu nous fournir ta requête ?
N'y aurait-il pas un problème de syntaxe dans ton curseur ?
Hors ligne
Bonjour,
Et si tu fais open curseur, fais tu bien les close curseur à la fin, et en cas d'erreur.
Car si tu fais plusieurs fois la manipulation, ça peut être une explication.
Hors ligne
Je ne pense pas que celà soit nécessaire.
Je vais t'expliquer à quel point c'est bizarre.
Voici en gros à quoi ressemble ma requête :
SELECT 1 FROM ( SELECT 2 FROM(...) )
En gros, SELECT 2 FROM (...) est une imbrication de plusieurs SELECT et fonctionne parfaitement.
Donc le curseur fonctionne également.
Mais quand j'ajoute juste un SELECT 1 FROM sur le SELECT 2 comme indiqué dans l'extrait de code, le curseur ne veut plus s'ouvrir.
Ce n'est donc pas un problème de curseur.
Hors ligne
Oui wazou1812, je fais bien un close dans tous les cas.
Hors ligne
Par curiosité, combien as-tu d'ordre SELECT ?
Peux-tu publier ta requête, voir ton curseur ?
As-tu essayé d'exécuter ton SELECT 2 tout seul sous PB ?
Hors ligne
tu n'as pas un autre curseur appelé identiquement? que tu ouvre avant?
Hors ligne
J'ai 4 SELECT imbriqués.
Que veux-tu dire par :"Peux-tu publier ta requête, voir ton curseur ?"
Et oui j'ai essayé SELECT 2 tout seul et ça fonctionne !
Hors ligne
Pour répondre à thezerg, je ferme tous mes curseurs correctement.
Hors ligne
cradleofpain a écrit:
J'ai 4 SELECT imbriqués.
Que veux-tu dire par :"Peux-tu publier ta requête, voir ton curseur ?"
Et oui j'ai essayé SELECT 2 tout seul et ça fonctionne !
Simplement copie le contenu de ton curseur voir de ta requête ici dans le forum,
de manière à ce que l'on puisse l'analyser !
Hors ligne
Comment faire pour récupérer le contenu de mon curseur ?
Hors ligne
cradleofpain a écrit:
Ya pas d'erreur dans ma requête !
Je l'exécute tel quel dans un programme java et le résultat est bon.
Et SQLErrText est vide...
Juste une question: As-tu quelquechose dans le SQLDBCode?
Hors ligne
Le SQLDBcode vaut 999 juste après mon OPEN curseur
En gros il ne trouve pas de résultat
Dernière modification par cradleofpain (15-05-2007 09:40:06)
Hors ligne
Il faut que tu regardes la liste des codes retours de ton SGBD pour savoir ce que ça signifie.
Tu es en Oracle ou Sybase?
Hors ligne
cradleofpain a écrit:
Comment faire pour récupérer le contenu de mon curseur ?
En gros on voudrait bien que tu fasses un ctrl + c de ton prog pb et un ctrl + v sur pbadonf voila
Hors ligne
Je suis sous Oracle.
Désolé thezerg, je ne peux pas vous fournir mon programme.
De toute façon, ça servirai à rien d'analyser la requête.
Je vous l'ai déjà dit, la requête fonctionne mais pas sous powerbuilder !!
Dernière modification par cradleofpain (15-05-2007 09:46:31)
Hors ligne
Tu as essayé de mettre ta requête principale sur une seule ligne, genre:
SELECT 1 FROM ( SELECT 2 FROM(...) )
au lieu de:
SELECT 1 FROM ( SELECT 2 FROM(...) )
Il y a ça dans l'aide PB sur les déclarations de curseurs dynamiques:
SQLStatement:
A string containing a valid SQL SELECT statement The string can be a string constant or a PowerBuilder variable preceded by a colon (such as :mysql). The string must be contained on one line and cannot contain expressions.
Hors ligne
J'ai essayé de créer une vue regroupant SELECT 2 et ça fonctionne.
Par contre, ce serait mieux si j'en utilisait pas.
D'autre part, j'ai essayé en créant une vue sur 2 SELECT imbriqués à l'intérieur de SELECT 2 et ça ne passe pas !!!
C'est du délire !!!
Hors ligne
Est-ce que le nombre de lignes retournées par ta requête est supérieur à ton paramètre Block DBParm?
Hors ligne
Comment on fait pour savoir la valeur de Block DBParm ?
Ma requête retourne 60 lignes. ça me parait pas énorme.
Dernière modification par cradleofpain (15-05-2007 12:22:55)
Hors ligne
C'est au niveau de la fenêtre database profile:
S'il n'y a rien de saisi, ce sont les paramètres par défaut qui s'appliquent (Je crois que pour ORACLE c'est 300 lignes)
Normalement, 60 lignes ça devrait effectivement passer...
Hors ligne