2011-08-17 4 views
0

J'ai une table qui contient une relation entre l'identifiant et le nom réel de la table de jointure. Je dois pouvoir extraire le nom de la table avec une valeur d'ID. exemple:Rejoindre une valeur de table dans la base de données

TableID TableName 
1   Test.Customers 
2   Test.Orders 
3   Test.Addresses 

Donc, pour pouvoir passer à l'ID de 1 et de revenir avec les « clients » et de pouvoir l'utiliser pour « SELECT * FROM clients ». Quelle est la meilleure approche pour le faire? À quoi ressemblerait cette procédure stockée?

Répondre

1

Vous devez utiliser SQL dynamique, comme:

CREATE PROCEDURE dbo.MyProc (@ID int) 
AS 

DECLARE @SQL Varchar(1000) = '' 

SELECT @SQL = 'SELECT * FROM ' + QUOTENAME(TableName) 
FROM MyLookupTable 
WHERE TableID = @ID 

EXEC (@SQL) 

Soyez très très très prudent avec SQL dynamique, and read this before proceeding.

+0

+1 pour avertissement sur les risques de SQL dynamique –

Questions connexes