PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → SQL SERVER - Procédure stockée avec SELECT
SQL SERVER - Procédure stockée avec SELECT
Started by Dominique MOUNIER-PO, Sep., 05 2013 10:25 AM - 8 replies
Registered member
15 messages
Posted on September, 05 2013 - 10:25 AM
Bonjour,
Je dois exécuter une procédure stockée sur un serveur SQL sans utiliser l'accès Natif et qui retourne un résultat en forme de liste (SELECT). Je n'ai pas accès à la base, uniquement à l'exécution de la procédure stockée.
Quelqu'un peut-il m'aider ??? je suis dans une impasse.

--
Dominique
Registered member
25 messages
Popularité : +1 (1 vote)
Posted on September, 05 2013 - 11:36 AM
Bonjour,

j'avais déjà essayé de récupérer les paramètres de sorties sur une proc stockée SQL server. Malheureusement sans accès natif, je crois bien que ce n'est pas possible.

Je te donne tout de même une piste avec les fonctions SQLPremier et SQLCOL que tu peux utiliser. Voici un bout de code pour exemple si ça peut te mettre sur la bonne voie :

TexteReq="DECLARE @return_value int, @lotTraites int, @cmdTraites int, @dateSortie date "+RC+" EXEC@return_value =PREPARATION_COMMANDES "+RC+" @date = '"+FEN_principale.gsDateCourante+"', @lotTraites = @lotTraites OUTPUT,@cmdTraites = @cmdTraites OUTPUT, @dateSortie = @dateSortie OUTPUT "+RC+" SELECT@lotTraites as N'@lotTraites',@cmdTraites as N'@cmdTraites', @dateSortie as N'dateSortie' "+RC+"SELECT'Return Value' = @return_value"

SQLConnecte("server","user","password","database","OLEDB",hOledbSQLServer)
SI SQLExec(TexteReq,"test") ALORS
SQLPremier("test")
Trace(SQLCol("test",1)) // renvoi la valeur de la première colonne de sortie

SINON
Info(HErreurInfo())
RENVOYER(Faux)
FIN

Bonne journée,
Registered member
15 messages
Posted on September, 05 2013 - 1:17 PM
Merci beaucoup pour ta réponse.
J'ai trouvé la solution entre temps en utilisant un code proche du tien mais en utilisant la fonction SQLTABLE.

Exemple de code:

TableSupprimeTout(TABLE_ResRequete)

// Connexion SQL SERVER
nNumConnexion = SQLConnecte(sServer,sUser,sPassword,sDataBase,"OLEDB",hOledbSQLServer)
SI nNumConnexion <> 0 ALORS

sSQLRequete est une chaîne = "MaProcedureStockee '"+ParametreProcedure+"'"
SI SQLExec(sSQLRequete,"REQ1") ALORS
SQLTable("REQ1",TABLE_ResRequete)
SINON
SQLInfoGene("REQ1")
Info("Erreur SQL : " + SQL.MesErreur)
FIN
SQLFerme("REQ1")

SINON
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données" + sDataBase + ...
"a échoué."+ RC +...
"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
FIN

SQLDéconnecte()

--
Dominique
Registered member
25 messages
Popularité : +1 (1 vote)
Posted on September, 05 2013 - 1:24 PM
c'est cool !

Merci de ton partage, cela me servira très probablement dans mes futurs projets.
Registered member
6 messages
Posted on April, 19 2019 - 5:57 PM
Bonjour Dominique,
J'utilise la même méthode que vous pour exécuter une procédure stockée sur SQL Server mais je ne parviens pas à récupérer les résultats... Je sèche depuis 2 jours...Auriez-vous une idée ?
Posted on August, 21 2019 - 10:29 PM
Dominique MOUNIER-PO avez-vous trouvez une solution ? Je sèche dessus depuis un moment. J'aurai voulu pouvoir lire ligne par ligne le résultat sans afficher dans une table. Un peu comme avec Hlitpremier et Hlitsuivant
Posted on August, 21 2019 - 11:26 PM
//i est un entier = 0
//SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
//// Récupérer la requête ligne à ligne
//TANTQUE SQLAvance("REQ1") = 0 // Il y a encore une ligne à lire
// i++
// // Récupérer les données
// NOM[i] = SQLLitCol("REQ1", 1)
// PRENOM[i] = SQLLitCol("REQ1", 2)
// POSTE[i] = SQLLitCol("REQ1", 3)
//FIN
//SQLFerme("REQ1")
Registered member
14 messages
Posted on August, 21 2019 - 11:30 PM
Jean-Luc P. Je pense avoir trouver la solution pour ton problème

//i est un entier = 0
//SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
//// Récupérer la requête ligne à ligne
//TANTQUE SQLAvance("REQ1") = 0 // Il y a encore une ligne à lire
// i++
// // Récupérer les données
// NOM[i] = SQLLitCol("REQ1", 1)
// PRENOM[i] = SQLLitCol("REQ1", 2)
// POSTE[i] = SQLLitCol("REQ1", 3)
//FIN
//SQLFerme("REQ1")

--
AFRICA SERVICE
Registered member
65 messages
Posted on March, 15 2021 - 4:15 PM
DMP a écrit :
Merci beaucoup pour ta réponse.
J'ai trouvé la solution entre temps en utilisant un code proche du tien mais en utilisant la fonction SQLTABLE.

Exemple de code:

TableSupprimeTout(TABLE_ResRequete)

// Connexion SQL SERVER
nNumConnexion = SQLConnecte(sServer,sUser,sPassword,sDataBase,"OLEDB",hOledbSQLServer)
SI nNumConnexion <> 0 ALORS

sSQLRequete est une chaîne = "MaProcedureStockee '"+ParametreProcedure+"'"
SI SQLExec(sSQLRequete,"REQ1") ALORS
SQLTable("REQ1",TABLE_ResRequete)
SINON
SQLInfoGene("REQ1")
Info("Erreur SQL : " + SQL.MesErreur)
FIN
SQLFerme("REQ1")

SINON
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données" + sDataBase + ...
"a échoué."+ RC +...
"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
FIN

SQLDéconnecte()

--
Dominique


Merci pour ce partage car je galère en ce moment sur ce sujet

Au niveau de ta Variable (MaProcedureStockee ) c'est le nom de ta procédure sur SQL SERVER ?

Quelle syntaxe pour le passage des paramètres dans ta variable (ParametreProcedure), en effet si il y en a plusieurs, je ne vois pas trop comment faire.

D'avance merci

--
Aurélien MACHABERT
Développeur Chez GAUTHIER Menuiserie