IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Exécuter un script SQL avec valeurs en retour


Sujet :

WinDev

  1. #1
    Invité
    Invité(e)
    Par défaut Exécuter un script SQL avec valeurs en retour
    Bonjour,

    J'ai écris un script SQL sous windev, dedans, je fais plusieurs requêtes UPDATE, si le script s'exécute sans erreur, j'exécute la requête suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select 0 as Num,'ok' as Msg

    Si l'une des requêtes UPDATE engendre une erreur, la requête suivante est exécutée:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select 99 as Num, ERROR_MESSAGE() as Msg

    J'aimerais pouvoir exécute le script et de récupérer ce que l'une des 2 requêtes SELECT renvoie.

    En lisant ce message, je comprends ce qu'il faudrait que j'utilise la fonction HEcécuteRequêteSQL avec pour paramètre hRequêteSansCorrection, or je ne sais pas comment utiliser cette fonction, j'ai toujours utilisé SQLExec, mais j'ai vu que cette dernière ne permet pas d’exécuter des scripts.

    Suis-je obligé de passer par une analyse? Si cela reste optionnel, que dois-je faire?

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 401
    Par défaut
    Bonjour,

    Qu'entends-tu par script SQL, car dans Windev, il y a les scripts SQL mais pour la création de tables ?
    J'ai l'impression que tu parles d'un script qui n'est qu'une suite de UPDATE.

  3. #3
    Invité
    Invité(e)
    Par défaut
    un script sql est une suite d'instructions sql, par exemple, le contenu d'une procédure stockée.

    Edit: en mettant tout mon code SQL dans une procédure stockée, je n'ai aucun soucis pour l’exécuter, j'arrive même à récupérer les valeurs ainsi retournées
    Dernière modification par Invité ; 15/09/2015 à 17h20.

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Billets dans le blog
    22
    Par défaut
    Bonjour

    As tu essayé

    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI SQLExec(SQL,"nomReq") ALORS
         SI PAS SQLFetch("nomReq") ALORS
               trace(SQLLitCol("nomReq",1),SQLLitCol("nomreq",2))
         FIN
    FIN

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour, SQLFetch me renvoie 1, donc marche pas :/

    C'est peut-être dû au fait que mon script reste assez particulier, il se présente de la manière suivante (rappel : marche très bien quand je l'exécute sous SQL SERVER):
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BEGIN TRY
    BEGIN TRANSACTION
    --exécution de 4 requêtes de type UPDATE
    COMMIT
    select 0,'Mise à jour des compteurs sur les congés'
    END TRY
    BEGIN CATCH
    IF @@trancount>0
    select 99, ERROR_MESSAGE()
    ROLLBACK
    END CATCH

    Au final, je pense que je vais me contenter d'exécuter une procédure stockée, faisant appel à mon script, l'avantage, c'est que s'il y a un bug dans mon script, il n'est pas nécessaire de compiler de nouveau mon projet windev.
    Merci tout de même

  6. #6
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Par défaut
    Bonjour,

    Les batches SQL (terme plus correct que scripts) ne fonctionnent correctement que si votre connexion utilise un curseur client, forward only, etc.
    Ce qui n'est pas le cas par défaut.

    cf. ..OptionsCurseur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script shell pour exécuter script sql avec variable
    Par Thibault69009 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/08/2014, 15h39
  2. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40
  3. Script SQL avec des EXIT SQL.SQLCODE
    Par fidififouille dans le forum Oracle
    Réponses: 14
    Dernier message: 23/04/2004, 16h45
  4. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 13h57
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo