2010-08-25 4 views
2

Utilisation de SQl Server 2000 J'ai une procédure stockée qui joint deux tables et renvoie ensuite les données. Je veux que sp puisse le faire pour n'importe quel nom de table que je lui passe, sinon j'aurai exactement le même code à l'exception du nom de la table 20 fois dans une instruction géante if. Fondamentalement, comment puis-je utiliser une variable pour pointer vers une table, ou est-ce autorisé? Merci.Table SQL "Pointeur"?

Répondre

0

Essayez de générer le SELECT en tant que chaîne, puis en appelant EXEC et en transmettant la chaîne.

par exemple.

declare @sql varchar(500) 
set @sql = 'select whatever from ' + @tableName 
exec @sql 
+2

Valide, mais risqué: http://xkcd.com/327/ –

0

un proc à tout faire est généralement une mauvaise mauvaise idée . 20 tables possibles que je pourrais avoir besoin d'aller selon les circonstances indiquent presque toujours une conception de base de données qui est mauvaise. Lire l'article Denis posté sur les malédictions et les bénédictions de SQL dynamique.

+0

Certaines colonnes de chaque table sont cohérentes et c'est ce que je tire. Serait-il préférable d'avoir 20 déclarations if? – Shawn

+0

Si j'avais cinq colonnes qui étaient les mêmes dans 20 tables, je les retirerais sur une table parent séparée. C'est ce que je veux dire par rapport à la mauvaise conception de votre base de données. – HLGEM

+0

Peut-être, mais cela ne fonctionnerait pas avec la façon dont j'affiche les données et les mise à jour. – Shawn