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

MS SQL Server Discussion :

Problème de récursivité dans une procédure stockée


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 23
    Points
    23
    Par défaut Problème de récursivité dans une procédure stockée
    Bonjour,
    je doit exécuter une procédure stockée dans l'une de mes pages, mais la procédure à exécuter contient de la récursivité.
    Lorsque je l'exécute, cette erreur survient :
    System.Data.SqlClient.SqlException: Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).
    La procédure doit pouvoir se rappeler elle-même environ 50 à 100 fois.

    Procedure Stockée (paramètre : @noLot) :
    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
     
    DECLARE @cursor AS CURSOR
    SET nocount ON
    DECLARE @noProduit AS varchar(20)
    DECLARE @noOf AS varchar(10)
    DECLARE @description AS varchar(60)
    SET @cursor  = cursor for
    SELECT DISTINCT ith.tref AS NoOF, ith2.tprod AS Produit, iim.idsclf AS Description, ith2.tlot AS CodeLot
    FROM lassonde.dbo.ith ith
    JOIN lassonde.dbo.fso fso ON ith.tref = sord
    JOIN lassonde.dbo.ith ith2 ON sord = ith2.tref AND sprod = ith2.tprod
    JOIN lassonde.dbo.iim iim ON ith2.tprod = iprod
    WHERE ith.tlot = @nolot AND ith.ttype IN ('I','M') AND ith.ttype <> 'T' AND ith2.ttype IN ('M','R')
    FOR READ only;
    OPEN @cursor 
    FETCH next FROM @cursor INTO @noOF, @noProduit, @description, @noLot
    WHILE (@@fetch_status<>0) 
      BEGIN		
        IF (@noLot<>'')
          EXEC usp_OF_family @noLot
        ELSE
          INSERT INTO ListeOF VALUES(@noOf, @noProduit, @description)
        FETCH next FROM @cursor INTO @noOF, @noProduit, @description, @noLot
      END 
    CLOSE @cursor
    DEALLOCATE @cursor
    RETURN
    Lorsque j'exécute cette procédure directement dans SQL Server manager Studio, il n'y a pas d'erreur, mais lorsque j'essaie de l'exécuter à partir d'une page Web ou par un rapport C8, l'erreur survient.

    Alors, y a t-il moyen d'enlever ou d'éviter la limite de 32 procédures stockées par exécution dans une page?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Dommage que vous n'ayez pas donné le code de la procédure usp_OF_family, ce qui nous aurait probablement permis de supprimer le curseur

    @++

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/08/2007, 11h02
  2. Réponses: 1
    Dernier message: 06/03/2007, 11h57
  3. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  4. Réponses: 4
    Dernier message: 16/12/2005, 16h25
  5. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45

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