如何使用表中的值编写动态SQL

时间:2014-06-17 21:47:23

标签: sql sql-server sql-server-2008

如果我有一个表实际上保存另一个表的表名和列名,如下所示:

TestTable的

TheTable nvarchar
TheColumn nvarchar

Sudo Logic

SELECT
     t.Something
    ,t.SomethingElse
    ,t.TheTable
    ,t.TheColumn
    ,(SELECT *TheColumn* FROM *TheTable*) AS Something
FROM TestTable t

即使写下这个问题,我也会得到几个类似问题的建议,但我希望有一个更简单的例子,如果有一个,所以无意复制一个问题。其他例子似乎具体而且相当广泛。

谢谢。

2 个答案:

答案 0 :(得分:1)

这里有一些基于示例代码的动态sql:

/* set up a few parameters */
DECLARE @table_name AS nvarchar(100)
DECLARE @column_name AS nvarchar(100)
DECLARE @SQLQuery AS NVARCHAR(1000)

/* set the parameter values */
SELECT @table_name=TheTable, @column_name=TheColumn 
FROM TestTable
WHERE -- ADD SOME LOGIC HERE TO GET SINGLE ROW

/* Build SQL String with parameters */
SET @SQLQuery = 
'SELECT ' + @column_name + 
' FROM ' +  @table_name 
-- + ' WHERE clause if required'

/* Execute SQL */
EXECUTE(@SQLQuery)

答案 1 :(得分:0)

是的,这可以使用动态sql完成。以下是一些可以帮助您入门的链接:

您还应该了解使用Dynamic sql的potential dangers