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 :

procédure stockée : condition et résultat au format xml


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut procédure stockée : condition et résultat au format xml
    salut,
    je suis sous sql server 2005
    j'ai un procédure stockée qui fonctionne bien.
    J'ai ajouté un paramètre pour pouvoir avoir le résultat sous forme de table ou au format xml.

    (j'ai simplifié la requête puisque ce n'est pas l'objet de ce post)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER PROCEDURE [dbo].[p_assoc_tmap]
    	@tmap_id int,
    	@as_xml bit -- 0 means normal output and 1 means xml output
    AS
    BEGIN
    	SELECT  DISTINCT tm_assoc2.r2p
    	FROM	   tm_assoc2
    	WHERE  type_id = @tmap
     
    	IF @as_xml = 1
    		FOR XML AUTO, ROOT('topics_of_type')
    END
    Quand j'execute ça, j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 156, Level 15, State 1, Procedure prio_TopicsByTypeID, Line 58
    Incorrect syntax near the keyword 'FOR'.
    Ca ne fait pas longtemps que je suis sous SQL Server. Je ne sais pas si je fais une erreur de syntax ou si ce n'est pas possible.

    Merci pour vos conseils.

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    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
    ALTER PROCEDURE [dbo].[p_assoc_tmap]
    	@tmap_id int,
    	@as_xml bit -- 0 means normal output and 1 means xml output
    AS
    BEGIN
     IF @as_xml = 1
     BEGIN
      SELECT  DISTINCT tm_assoc2.r2p
      FROM tm_assoc2
      WHERE type_id = @tmap
      FOR XML AUTO, ROOT('topics_of_type')
     END
     ELSE
     BEGIN
     SELECT DISTINCT tm_assoc2.r2p
     FROM tm_assoc2
     WHERE  type_id = @tmap
     END	
    END
    ++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Une requête SQL c'est un tout, y compris la clause FOR XML !

    donc :
    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
    ALTER PROCEDURE [dbo].[p_assoc_tmap]
    	@tmap_id int,
    	@as_xml bit -- 0 means normal output and 1 means xml output
    AS
    BEGIN
    IF @as_xml = 1
       SELECT  DISTINCT tm_assoc2.r2p
       FROM	   tm_assoc2
       WHERE  type_id = @tmap
       FOR XML AUTO, ROOT('topics_of_type');
    ELSE
       SELECT  DISTINCT tm_assoc2.r2p
       FROM	   tm_assoc2
       WHERE  type_id = @tmap;
    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/ * * * * *

  4. #4
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    ok, merci pour vos réponses.

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

Discussions similaires

  1. [Débutant] DataGridView lié à une procédure stockée : Pas de résultats
    Par zets22 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2013, 11h35
  2. procédure stockée, concaténation des résultats
    Par doudoustephane dans le forum Développement
    Réponses: 8
    Dernier message: 13/10/2008, 16h52
  3. Procédure stockée : parcourir les résultats d'un SELECT
    Par choupeo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 13/12/2007, 18h55
  4. Format de données en sortie d'une procédure stockée
    Par Martin Sylvie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 12h02
  5. [C#] Récupérer le résultat d'une procédure stockée
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2004, 13h45

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