我有一个表,其中包含id与连接表的实际名称的关系,我需要能够使用ID值获取实际的表名。例如:
TableID TableName
1 Test.Customers
2 Test.Orders
3 Test.Addresses
因此,能够传递1的ID并返回“Customers”并能够将其用于“SELECT * FROM Customers”。这样做的最佳方法是什么?该存储过程会是什么样的?
答案 0 :(得分:1)
您需要使用动态SQL,例如:
CREATE PROCEDURE dbo.MyProc (@ID int)
AS
DECLARE @SQL Varchar(1000) = ''
SELECT @SQL = 'SELECT * FROM ' + QUOTENAME(TableName)
FROM MyLookupTable
WHERE TableID = @ID
EXEC (@SQL)
非常非常小心使用动态SQL,and read this before proceeding.