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 :

nom de table en parametre


Sujet :

Développement SQL Server

  1. #1
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut nom de table en parametre
    Salut à tous, je souhaiterais créer une procédure stoquée générique contenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM @NomDeLaTable
    cependant j'ai essayé sans succès le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE [getTableRecords]
    @tableName varchar(50)
    AS
    BEGIN
    	SELECT * from @tableName
    END
    Le SGBD me dit que @tableName n'est pas déclaré... comment se fait-ce ?
    Bye
    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  2. #2
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous êtes obligé pour cela de soumettre votre requête en utilisant du SQL dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE PROCEDURE dbo.getTableRecords
    	@tableName SYSNAME
    AS
    BEGIN
    	DECLARE @SQL NVARCHAR(128)
     
    	SET @SQL = 'SELECT mesColonnes FROM dbo.' + @tableName
    	EXEC sp_executeSQL @SQL
    END
    Utilisez * pour voir ce que contient vos tables peut convenir, mais ne spécifiez jamais cela dans une procédure stockée.
    En effet, si vous mettez *, alors le moteur de base de données va devoir interroger le catalogue de métadonnées pour savoir quelles sont les colonnes de votre table.
    Donc votre plan de requête est sujet à recompilation, donc à ne pas être réutilisé à partir du cache de procédures, donc vous perdrez en performances

    Cependant je pense que votre problème est soulevé par une mauvaise modélisation comme dans ce sujet

    @++

  3. #3
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    en fait j'ai le choix entre faire ca ou 100 proc stock...

    en tout cas ca marche nickel, merci

    bye
    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

Discussions similaires

  1. passer un nom de table en parametre
    Par fred19732 dans le forum Développement
    Réponses: 2
    Dernier message: 14/01/2011, 23h32
  2. Réponses: 9
    Dernier message: 11/01/2010, 10h30
  3. nom de table en parametre
    Par falifalibe2 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/11/2009, 13h13
  4. Réponses: 2
    Dernier message: 12/07/2006, 16h20
  5. nom de table passé en parametre
    Par lafuse dans le forum Oracle
    Réponses: 5
    Dernier message: 06/10/2005, 16h54

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