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 :

[PROC STOCK / SQL SERVER 2000]


Sujet :

MS SQL Server

  1. #1
    CUCARACHA
    Invité(e)
    Par défaut [PROC STOCK / SQL SERVER 2000]
    Salut

    Voici mon problème cette procédure stockée ne me renvoie pas du tout de recordset, pourtant en exécution pas à pas elle passe bien dans les if et la derniere instruction executée est bien un SELECT...

    Si quelqu'un à une idée...

    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
     
    ALTER PROCEDURE EZWA_PAO_TemplatePageGetDivs
     (
      @CurrentClient int,
      @CodePage int
     )
    AS
     /* SET NOCOUNT ON */
     Declare @LinkToTemplate int
     declare @nbrDivs int 
     SELECT     
      @nbrDivs = isnull(COUNT(A.Code),0),
      @LinkToTemplate = B.L01_C
     FROM         B LEFT OUTER JOIN
                           A ON 
                           B.Code = A.L01_B
     WHERE     (B.Code = @CodePage) AND (B.L01_E = @CurrentClient)
     GROUP BY B.L01_C
     
     IF @nbrDivs = 0
     BEGIN
      IF NOT @LinkToTemplate IS NULL
      BEGIN   
       -- Chargement des divs du template
       SELECT 
        txtFromCellId, 
        txtToCellId, 
        intZOrder,
        -1 as L01_D
       FROM
        CBloc
       WHERE
        (L01_C = @LinkToTemplate)
       ORDER BY intZOrder
      END 
     END 
     ELSE
     BEGIN
      -- Chargement des divs de la page
      SELECT
       txtFromCellId,
       txtToCellId,
       intZOrder,
       L01_D
      FROM
       A
      WHERE
       (L01_E = @CurrentClient) AND (L01_B = @CodePage)
       ORDER BY intZOrder
     END  
     RETURN
    D'avance merci...

    @+

    Laurent

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    je sais pas si les procédures stockées permettent de récupérer un recordset.

    mais tu peux peut-être essayer de faire une fonction qui te retourne une table.

  3. #3
    CUCARACHA
    Invité(e)
    Par défaut Normalement si...
    Normalement oui puisque toutes mes applis foctionnent comme ça...

    Exemple :

    Set oRS = oCmd.Execute

    Si oCmd contient un

    SELECT * FROM TOTO

    oRS se voit affecter un recordset

    Dans mon cas, j'ai peur que je le mettre dans le IF empeche la Proc de renvoyer le Recordset...

    Donc je ne sais pas trop quoi faire à part découper le traitement en deux proc

    Mais si quelqu'un a une autre Idée...

    D'avance merci

    Laurent

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    Si tu veux conserver ta proc édure stockée (je te rappèle que tu peux faire une fonction), et si le problème est que ta requête est encapsulée dans un if, tu peux essayer dans le if et le else, initialiser une variable texte contenant ta requête en question et après le passage conditionnel faire un exec de ta requête.

    mais bon ça reste du bricolage

  5. #5
    CUCARACHA
    Invité(e)
    Par défaut Oups...
    Je connais l'exec de chaine mais c'est très très lent, pour l'instant on s'en fou mais lorsque l'applis sera en charge, ça pourrait me faire tout foirer car cette procédure va etre tres souvent appelée

    Je dois donc impérativement eviter les exec

    Merci quand meme

    @+

    Laurent

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    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 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    Il est probable que @nbrDivs soit vide (marqueur NULL) après exécution de la première requête. En effet si la condition WHERE n'est pas satisfait vous ne retournez AUCUNE ligne. ISNULL (préférez d'ailleurs COALESCE) n'a aucun effet sur l'ensemble vide.

    Ajoutez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF @nbrDivs IS NULL SET @nbrDivs = 0
    après votre première requête SELECT.

    A +

  7. #7
    CUCARACHA
    Invité(e)
    Par défaut Jointure orientée
    Bonjour

    Merci je teste ça... Mais un doute subsite car l'orientation de ma jointure est censée éviter l'absence de ligne...

    Merci

    @+

    Laurent

Discussions similaires

  1. Executer un proc stock SQL Server depuis Oracle
    Par ATMorphine dans le forum PL/SQL
    Réponses: 1
    Dernier message: 17/05/2011, 11h05
  2. Réponses: 0
    Dernier message: 27/04/2009, 16h13
  3. Problème LIKE Procédure stocké SQL Server 2000
    Par Pilhole dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 18/02/2008, 09h24
  4. Proc stocké sql server 2k
    Par Bba_M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2006, 21h14
  5. Procedure stockée avec ntext dans SQL server 2000
    Par nagababa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/11/2003, 20h46

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