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

Développement SQL Server Discussion :

Procedure ne s'execute pas [2008]


Sujet :

Développement SQL Server

  1. #1
    Membre habitué Avatar de i.chafai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Décembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 117
    Points : 167
    Points
    167
    Par défaut Procedure ne s'execute pas
    Bonjour,
    J'ai la procédure suivante créer sur une instance 2008
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    CREATE PROCEDURE sp_updateCours
    AS
             BEGIN
                 SET XACT_ABORT ON;
                 BEGIN TRY
                     BEGIN TRANSACTION;
                     DECLARE @cours numeric(24 , 6);
                     DECLARE @updated TABLE(cbMarqFA int);
                     SELECT
                            @cours = D_Cours
                     FROM
                          P_DEVISE
                     WHERE  cbIndice = 1;
                     UPDATE F_DOCENTETE
                       SET
                           DO_Cours = @cours ,
                           DO_Devise = 1
                     OUTPUT
                            deleted.cbMarq
                            INTO @updated
                     WHERE
                           (DO_Domaine = 0)
                           AND (DO_Type < 6)
                          -- AND (DO_Devise = 1)
                           AND (YEAR(DO_Date) >= 2018)
                           AND (DO_TotalHT > 0)
                           AND (DO_Cours <> @cours);
                     PRINT @@rowcount;
                     UPDATE F_DOCLIGNE
                       SET
                           DL_PUDevise = ROUND(DL_PrixUnitaire * @cours , 3)
                     FROM   F_DOCENTETE e
                            INNER JOIN F_DOCLIGNE l ON e.DO_Piece = l.DO_Piece
                                                       AND e.DO_Type = l.DO_Type
                            INNER JOIN @updated p ON e.cbMarq = p.cbMarqFA;
                     PRINT 'commit';
                     COMMIT TRANSACTION;
                 END TRY
                 BEGIN CATCH
                     IF(XACT_STATE()) = -1
                         BEGIN
                             PRINT 'rollback';
                             PRINT ERROR_MESSAGE();
                             ROLLBACK TRANSACTION;
                         END;
                 END CATCH;
             END;
    j'ai lancé la proc à plusieurs reprise mais aucune mise à jour n'est effectué (elle aurait du faire 800 update sur la premire requete et 2400 sur la deuxième)
    même les print que j'ai fait pour tester ne s'affichent pas , et tout d'un coup elle fonctionne parfaitement.
    j'arrive pas à comprendre d'ou vient le problème.
    j'attends aussi vos remarques pour améliorer mon code

    Merci par avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Corrections :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    CREATE PROCEDURE sp_updateCours
    AS
    SET NOCOUNT ON;
    BEGIN
     
       BEGIN TRANSACTION;
       DECLARE @cours numeric(24, 6);
       DECLARE @updated TABLE (cbMarqFA int);
     
       BEGIN TRY
          SELECT @cours = D_Cours
          FROM   dbo.P_DEVISE
          WHERE  cbIndice = 1;
     
          UPDATE dbo.F_DOCENTETE
          SET    DO_Cours = @cours ,
                 DO_Devise = 1
          OUTPUT deleted.cbMarq
                 INTO @updated
          WHERE DO_Domaine = 0
                AND DO_Type < 6
                -- AND (DO_Devise = 1)
                AND YEAR(DO_Date) >= 2018
                AND DO_TotalHT > 0
                AND DO_Cours <> @cours;
     
          PRINT @@rowcount;
     
          UPDATE l
          SET    DL_PUDevise = ROUND(DL_PrixUnitaire * @cours , 3)
          FROM   F_DOCLIGNE  AS l
                 INNER JOIN F_DOCENTETE AS e 
                    ON e.DO_Piece = l.DO_Piece AND e.DO_Type = l.DO_Type
                 INNER JOIN @updated AS p ON e.cbMarq = p.cbMarqFA;
     
          PRINT 'commit';
     
          COMMIT TRANSACTION;
     
       END TRY
       BEGIN CATCH
     
          IF XACT_STATE() = 0
             RETURN;
     
          ROLLBACK TRANSACTION;
     
          PRINT 'rollback';
     
          PRINT ERROR_MESSAGE();
     
       END CATCH;
    END;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. ma procedure ne s'execute pas
    Par highs dans le forum SQL
    Réponses: 14
    Dernier message: 17/02/2008, 20h06
  2. Mon getline ne s'execute pas.
    Par mail1789 dans le forum C++
    Réponses: 7
    Dernier message: 21/08/2005, 19h42
  3. help please[global.asa] il s'execute pas!
    Par thief dans le forum ASP
    Réponses: 6
    Dernier message: 24/03/2005, 13h10
  4. ShellExecuteEx ne s'execute pas à chaque fois??
    Par Gothico dans le forum MFC
    Réponses: 11
    Dernier message: 01/03/2005, 22h02
  5. [Kylix] Compilation OK Execution pas ok
    Par teurf dans le forum EDI
    Réponses: 14
    Dernier message: 03/12/2002, 15h10

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