OVH Cloud OVH Cloud

[SQL] Aux tripatouilleurs de requetes SQL

9 réponses
Avatar
Roumegou Eric
A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et
autres ...
J'ai besoin de savoir combien il y a de colonnes à une requête et
j'avais une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de ,
... c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)

9 réponses

Avatar
jacques trepp
Roumegou Eric wrote:
A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et autres
...
J'ai besoin de savoir combien il y a de colonnes à une requête et
j'avais une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de , ...
c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



salut Eric,
suggestion pas terrible, mais bon... ;)
tu pourrais rechercher l'occurrence de [virgule+espace], qui éviterais
le ",0)".
évidemment, ça oblige à ajouter un espace dans ta liste de colonnes
(c'est pour ça que je dis que c'est pas terrible). :)
Avatar
Daniel
Salut,
"Roumegou Eric" writes:

A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et
autres ...
J'ai besoin de savoir combien il y a de colonnes à une requête et
j'avais une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de ,
... c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



si l'objectif est de savoir le nombre de colonne avant l'envoie de la
requête, mis a part compter le nombre de AS, je ne vois pas de
procédure simple, sauf peut être envoyer la requête au moteur et
récupérer le résultat.



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
ManuPavy
jacques trepp wrote:

Roumegou Eric wrote:

A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et
autres ...
J'ai besoin de savoir combien il y a de colonnes à une requête et
j'avais une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de ,
... c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



salut Eric,
suggestion pas terrible, mais bon... ;)
tu pourrais rechercher l'occurrence de [virgule+espace], qui éviterais
le ",0)".
évidemment, ça oblige à ajouter un espace dans ta liste de colonnes
(c'est pour ça que je dis que c'est pas terrible). :)



ou bien supprimer tout ce qui se trouve entre ( et ) pour compter le
nombre de virgule après.
Il y a peut etre des failles, mais je pense que c'est déjà pas mal

Manu
Avatar
Roumegou Eric
Daniel a formulé la demande :
Salut,
"Roumegou Eric" writes:

A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et
autres ...
J'ai besoin de savoir combien il y a de colonnes à une requête et
j'avais une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de ,
... c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



si l'objectif est de savoir le nombre de colonne avant l'envoie de la
requête, mis a part compter le nombre de AS, je ne vois pas de
procédure simple, sauf peut être envoyer la requête au moteur et
récupérer le résultat.



c'est ce que j'ai fait (le AS). Par deft, ma fn reçoit en param un sep
qui est une , . Dans le cas où j'utiliserais des instructions, je
m'efforcerais d'utiliser le AS pour chaque col, et ferait un
GetNbFields(requete," AS ")

Ca marche.

Faut dire que c'est quand meme hyper pratique cette possibilité de
rajouter des parametres facultatifs à une fn sans être obligé de
revenir sur tous les codes l'utilisant.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Philippe Lienart
Dans son message précédent, Roumegou Eric a écrit :
A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et autres ...
J'ai besoin de savoir combien il y a de colonnes à une requête et j'avais une
fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de , ...
c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



As-tu étudié la variable SQL.NbCol mais attention elle n'est valable
qu'avec SQLExec.

--
A+

PhL
Avatar
Roumegou Eric
Philippe Lienart a utilisé son clavier pour écrire :
Dans son message précédent, Roumegou Eric a écrit :
A tout ceux qui ont trituré de la requete, les sqlmanagerxmens et autres
...
J'ai besoin de savoir combien il y a de colonnes à une requête et j'avais
une fonction pour analyser une requete
PROCEDURE GetNbFields(pReq)
nbFields est un entier
mareq est chaîne
mareq=pReq
mareq=Remplace(mareq," from "," FROM ")
nbFields=ChaîneOccurrence(Gauche(mareq,Position(mareq," FROM")),",")+1
RENVOYER nbFields

mais c'est très c.. car dés que j'utilise des instructions avec de , ...
c'est faux


Select PEOPLE_BANK.BNK_LIB01,sum(round(BNK_CREDIT,0)) AS
CREDIT,SUM(round(BNK_VAL01,0)) AS QTE from PEOPLE

je pourrais forcer l'utilisation de AS mais c'est pas terrible.

Alors si vous avez The Function !



As-tu étudié la variable SQL.NbCol mais attention elle n'est valable qu'avec
SQLExec.



Non car j'en ais besoin avant l'execution de la requete et que
j'utilise les accès alternatifs.

Merci quand meme.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Manu
> > As-tu étudié la variable SQL.NbCol mais attention elle n'est valable


qu'avec
> SQLExec.

Non car j'en ais besoin avant l'execution de la requete et que
j'utilise les accès alternatifs.



Tu fais un exec et tu récupères le mysqlGetNumRows ;-)
Avatar
Roumegou Eric
Manu a présenté l'énoncé suivant :
As-tu étudié la variable SQL.NbCol mais attention elle n'est valable
qu'avec SQLExec.



Non car j'en ais besoin avant l'execution de la requete et que
j'utilise les accès alternatifs.



Tu fais un exec et tu récupères le mysqlGetNumRows ;-)



Cela renvoie le nbre de lignes ? où y a-t-il un pb dans ma
compréhension du rosbif ?
Rows=ligne, Column=colonne isn'it old fellows ?

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Manu
"Roumegou Eric" wrote in message
news:
Manu a présenté l'énoncé suivant :
>>> As-tu étudié la variable SQL.NbCol mais attention elle n'est valable
>>> qu'avec SQLExec.
>>
>> Non car j'en ais besoin avant l'execution de la requete et que
>> j'utilise les accès alternatifs.
>
> Tu fais un exec et tu récupères le mysqlGetNumRows ;-)

Cela renvoie le nbre de lignes ? où y a-t-il un pb dans ma
compréhension du rosbif ?
Rows=ligne, Column=colonne isn'it old fellows ?



désolé NumFields et pas NumRows :-)

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)