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 :

Erreur de Syntaxe Procedure Stockée


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Par défaut Erreur de Syntaxe Procedure Stockée
    Bonjour,
    Ci-après le code de ma procédure stockée avec le message d'erreur suivant après exécution :

    Msg*207, Niveau*16, État*3, Ligne*1
    'Avril' : nom de colonne incorrect.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXEC ( ' INSERT INTO CDG_Tb_IrisMere_Analytique_ApsRep
               (MoisPeriode, Compte, Libelle, Rubrique, Activite, Montant, AnPeriode, Type)
    SELECT  '+ @MoisPeriode+ ', WRUBRW, WLRUBW, WTR1, WTR2, PRSLP,  ' + @AnPeriode + ',''Réel'' 
    FROM   ' + @NomTable + '
    ORDER BY WRUBRW, WTR1, WTR2, PRSLP ')
    'Avril' correspond à la variable @MoisPeriode...

    Je ne comprends pas pourquoi j'ai ce message d'erreur alors que la variable @anPeriode ne retourne aucune erreur (les deux variable sont en varchar)

    Merci pour votre aide

  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 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Vous oubliez de mettre des apostrophes pour entourer des valeurs, alors SQL croit que ce sont des colonnes et ne les trouvent pas !

    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/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Par défaut
    Merci pour la réponse
    Cependant, dans mon code, les variables @MoisPeriode, @AnPeriode et @NomTable ont bien des apostrophes avant et après !!!
    Faut-il en ajouter d'autres, et où ?
    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Montrez l'intégralité de votre code.

    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/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Par défaut
    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
    ALTER PROCEDURE [CSD\RDS].[PS_Reporting_Recup_IrsMere_Analytique_ApsRep]
     
    @AnPeriode varchar(50),
    @MoisPeriode varchar(50),
    @NomTable varchar(100)
     
    AS
    SET NOCOUNT ON;
    BEGIN
     
    EXEC ( ' INSERT INTO CDG_Tb_IrisMere_Analytique_ApsRep
               (MoisPeriode, Compte, Libelle, Rubrique, Activite, Montant, AnPeriode, Type)
    SELECT  ' + @MoisPeriode + ', WRUBRW, WLRUBW, WTR1, WTR2, PRSLP,  ' + @AnPeriode + ',''Réel'' 
    FROM   ' + @NomTable + '
    ORDER BY WRUBRW, WTR1, WTR2, PRSLP ')
     
    END

  6. #6
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Montrez un exemple d'appel également que l'on puisse voir les valeurs envoyées dans vos variables d'entrées!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Par défaut
    je passe par slq server management studio en faisant clic droit sur la procédure (exécuter la procédure stockée...). Donc les variables sont rentrées manuellement.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par lito74 Voir le message
    je passe par slq server management studio en faisant clic droit sur la procédure (exécuter la procédure stockée...). Donc les variables sont rentrées manuellement.
    Donc sans apostrophes !!!!

    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/ * * * * *

  9. #9
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Donc sans apostrophes !!!!
    Surement...

  10. #10
    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 : 43
    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
    Par défaut
    Bonjour,

    Faisons simple : utilisons sp_executesql :

    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
    ALTER PROCEDURE	[CSD\RDS].[PS_Reporting_Recup_IrsMere_Analytique_ApsRep]
    	@AnPeriode varchar(50),
    	@MoisPeriode varchar(50),
    	@NomTable varchar(100)
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	DECLARE @sql nvarchar(max)
     
    	SET @sql =
    	N'INSERT INTO dbo.CDG_Tb_IrisMere_Analytique_ApsRep
    	(
    		MoisPeriode
    		, Compte
    		, Libelle
    		, Rubrique
    		, Activite
    		, Montant
    		, AnPeriode
    		, Type
    	)
    	SELECT  @_MoisPeriode
    		, WRUBRW
    		, WLRUBW
    		, WTR1
    		, WTR2
    		, PRSLP
    		, @AnPeriode
    	FROM	dbo.' + @NomTable
    	+ 'ORDER BY WRUBRW, WTR1, WTR2, PRSLP'
     
    	EXEC sp_executesql
    		@sql
    		, N'@MoisPeriode varchar(50), @AnPeriode varchar(50)'
    END
    Non seulement le code est plus simple, mais en plus on n'aura qu'un plan de requête par table, quelle que soit la valeur des variables.

    @++

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Par défaut
    C'est effectivement les apostrophes... Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXEC ( ' INSERT INTO CDG_Tb_IrisMere_Analytique_ApsRep
               (MoisPeriode, Compte, Libelle, Rubrique, Activite, Montant, AnPeriode, Type)
    SELECT  ''' + @MoisPeriode + ''', WRUBRW, WLRUBW, WTR1, WTR2, PRSLP,  ''' + @AnPeriode + ''',''Réel'' 
    FROM   ' + @NomTable + '
    ORDER BY WRUBRW, WTR1, WTR2, PRSLP ')
    Merci pour votre aide

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

Discussions similaires

  1. [MySQL-5.6] Erreur de syntaxe procédure stockée
    Par issoram dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/10/2014, 12h31
  2. erreur avec ma procedure stockée/trigger
    Par erox44 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/04/2010, 16h38
  3. problème de syntaxe (procedures stockées)
    Par diamentelle dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/02/2009, 01h15
  4. erreur syntaxe procedure stockée
    Par megane dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 07/11/2008, 12h09
  5. problème de syntaxe procedure stockée
    Par chti_juanito dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/04/2007, 15h03

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