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 :

Nom de table en paramètre


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 154
    Points : 61
    Points
    61
    Par défaut Nom de table en paramètre
    Bonjour,

    Je veux rendre une requête SQL paramètrable. Pour cela j'ai déclaré une variable mais si la variable est sur la valeur d'une condition where cela fonctionne mais pas si c'est le nom de la table.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE @annee int ,@nom_table varchar(100)
     
    SET @annee=2013
    SET @nom_table='[prod_evt].[detail_' + STR(@annee,4) + '_sat]'
     
    select * from [prod_evt].[detail_2013_sat] where [année période]=@annee
    -- OK
     
    select * from @nom_table where [année période]=@annee
    -- KO
    -- Must declare the table variable "@nom_table".
    Pourquoi ?

    Je voudrais éviter de passer par un exec ( ... ) parceque la requête est assez lourdre avec plusieurs sql imbriqués.

    Ou est mon erreur

  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 848
    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 848
    Points : 52 964
    Points
    52 964
    Billets dans le blog
    6
    Par défaut
    Il n'y a pas d'erreur. Un nom d'objet n'est pas une valeur donc pas paramétrable.
    Vous devez passer par du SQL dynamique.

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

Discussions similaires

  1. passer le nom de table en paramètre avec iReport
    Par imanoual dans le forum iReport
    Réponses: 12
    Dernier message: 27/03/2012, 20h49
  2. [A-03]SQL-Nom de table comme paramètre
    Par AndréPe dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/03/2009, 17h29
  3. Passage d un nom de table en paramètre d'une procédure stockée
    Par Cedric33 dans le forum Développement
    Réponses: 22
    Dernier message: 10/02/2009, 16h12
  4. Réponses: 6
    Dernier message: 12/01/2009, 15h57
  5. Passer un nom de table en paramètre.
    Par ygrim dans le forum Développement
    Réponses: 2
    Dernier message: 05/08/2008, 15h01

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