Variable nom de la table dans l'instruction select

J'ai quelques tables pour stocker les différentes informations du fichier, comme les pouces, les images, les fiches techniques, ...

Je suis en train d'écrire une procédure stockée pour récupérer le nom d'un ID spécifique. quelque chose comme:

    CREATE PROCEDURE get_file_name(
    @id int,
    @table nvarchar(50)
    )as
    if @table='images'
        select [filename] from images
        where id = @id
    if @table='icons'
        select [filename] from icons
        where id = @id
....

Comment puis-je réécrire cette procédure à l'aide de case when déclaration ou dois-je simplement utiliser le tableau comme nom de variable?

Pour une meilleure conception de la solution que j'avais recommandé de déplacer "fichier" entité à une autre table et de référence de référence dans le domaine avec une CLÉ ÉTRANGÈRE. Ensuite, vous n'aurez pas besoin de vous embêter avec SQL évaluation
tu veux dire que j'ai une table de fichiers et liés à toutes les images, les icônes,... tables à elle?
oui. Puis Joint vous aidera à obtenir tout les trucs avec les données du fichier: SELECT icons.Name, file.Filename FROM icons INNER JOIN files ON files.Id=icons.FileId WHERE icons.Id=1

OriginalL'auteur Ashkan Mobayen Khiabani | 2013-11-06