加入数据库中的表值

时间:2011-08-17 15:46:40

标签: sql stored-procedures dynamic-sql

我有一个表,其中包含id与连接表的实际名称的关系,我需要能够使用ID值获取实际的表名。例如:

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

因此,能够传递1的ID并返回“Customers”并能够将其用于“SELECT * FROM Customers”。这样做的最佳方法是什么?该存储过程会是什么样的?

1 个答案:

答案 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.