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

Langage SQL Discussion :

Procédure stockee avec variable de nom de colonne


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut Procédure stockee avec variable de nom de colonne
    Bonjour à tous,

    Lorsque je teste cette procédure stockée, j'obtiens ce message d'erreur:
    No column was specified for column 1 of 'OrderedArticles'

    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
     
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[SYN_sp_GetArticlesByDomaine]
    	-- Add the parameters for the stored procedure here
    		@domaine_id varchar(5),
    		@modeleOrder varchar(10),
    		@numBeginPage int,
    		@numEndPage int
    		--@allResult	int	OUTPUT
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
    DECLARE @champ_domaine varchar(5)
    DECLARE @champs varchar(2000)
     
     
    SET @champ_domaine =  CASE
    WHEN @domaine_id = 'S_01' THEN 'S_01' 
    WHEN @domaine_id = 'S_02' THEN 'S_02'
    WHEN @domaine_id = 'S_03' THEN 'S_03'
    WHEN @domaine_id = 'S_04' THEN 'S_04'
    WHEN @domaine_id = 'S_05' THEN 'S_05'
     
    END
    --
    SET @champs =  ' S_AUTEUR, S_CAT1, S_CAT2, S_CAT3, S_CAT4, S_CAT5, S_CLE1, S_CLE2, S_CLE3, S_CONDIT_A, S_CONDIT_V, S_CREATION, S_DISPO, 
                          S_DR_AUTEU, S_ID, S_ID_FAMIL, S_ID_RAYON, S_ID_SSFAM, S_IMAGE, S_IMAMIN, S_ISBN, S_MEMOFAC, S_MEMOWEB, S_MODELE, S_MODELEE, 
                          S_MODELEN, S_NBPAGE, S_PARU, S_PRIX_HT, S_PRIX_TI, S_QDISPO, S_QV_3, S_SERIE, S_SOMMEIL, S_SSTITRE, S_STATUT, S_TAUX_TVA, 
                          S_TEXTE, S_WEB, ROW_NUMBER() OVER (ORDER BY ' + @modeleOrder + ') AS RowNumber FROM STOCK WHERE (S_WEB = 1) AND (' + @champ_domaine + ' = 1)'
     
     
     
    WITH OrderedArticles AS 
    (
    	SELECT @champs 
    ) 
     
    SELECT * FROM OrderedArticles WHERE RowNumber BETWEEN @numBeginPage AND @numEndPage
     
     
    END

    D'avance, merci pour votre aide

    Nicolas

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le message veut dire qu'il faut nommer (aliaser) la colonne de votre sous requête OrderedArticles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WITH OrderedArticles AS 
        (
        SELECT @champs AS champ
        ) 
    SELECT champ
    FROM OrderedArticles
    WHERE RowNumber BETWEEN @numBeginPage AND @numEndPage
    Il me semble aussi que le SELECT doit faire partie du même bloc que le WITH.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut
    Merci beaucoup pour cette réponse rapide !

    J'ai essayé le code proposé et j'obtiens ce message:

    Msg*207, Niveau*16, État*1, Procédure*SYN_sp_GetArticlesByDomaine, Ligne*44
    Invalid column name 'RowNumber'.
    Msg*207, Niveau*16, État*1, Procédure*SYN_sp_GetArticlesByDomaine, Ligne*44
    Invalid column name 'RowNumber'.
    J'ai également essayé d'inclure le select dans le bloc with, sans succès

Discussions similaires

  1. Des variables comme nom de colonnes
    Par Chacha35 dans le forum Développement
    Réponses: 1
    Dernier message: 21/11/2009, 00h39
  2. Réponses: 26
    Dernier message: 24/06/2009, 09h32
  3. PL/pgSQL : conflit entre variable et nom de colonne
    Par archeboc dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 26/03/2008, 12h10
  4. Procédure stockée avec variable en clause FROM
    Par Richard MORRISSEY dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/11/2006, 16h00
  5. Fonction INDIRECT avec variable sur n° de colonne
    Par mat.guillaume dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/08/2006, 18h04

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