|
SQL SERVER - Procédure stockée avec SELECT |
Débuté par Dominique MOUNIER-PO, 05 sep. 2013 10:25 - 8 réponses |
| |
| | | |
|
| |
Membre enregistré 15 messages |
|
Posté le 05 septembre 2013 - 10:25 |
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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 25 messages Popularité : +1 (1 vote) |
|
Posté le 05 septembre 2013 - 11:36 |
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))
SINON Info(HErreurInfo()) RENVOYER(Faux) FIN Bonne journée, |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 15 messages |
|
Posté le 05 septembre 2013 - 13:17 |
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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 25 messages Popularité : +1 (1 vote) |
|
Posté le 05 septembre 2013 - 13:24 |
c'est cool !
Merci de ton partage, cela me servira très probablement dans mes futurs projets. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 19 avril 2019 - 17:57 |
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 ? |
| |
| |
| | | |
|
| | |
| |
Posté le 21 août 2019 - 22:29 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 21 août 2019 - 23:26 |
//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") |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 14 messages |
|
Posté le 21 août 2019 - 23:30 |
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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 65 messages |
|
Posté le 15 mars 2021 - 16:15 |
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 |
| |
| |
| | | |
|
| | | | |
| | |
|