如何在Microsoft TSQL中的FROM子句中传递变量值

时间:2017-11-12 05:29:51

标签: sql-server tsql

抱歉,我正在上传我的查询照片,因为我不知道格式化我的文字......作为一个令人困惑的新手。

querypic

3 个答案:

答案 0 :(得分:0)

所以你要执行:

select * from File_20170703 -- where your table name is a variable.

无法对表名或列名使用变量,您需要做的是构建动态sql并使用sp_executesql执行它。

这是一个例子:

DECLARE @sql nvarchar(4000)
SELECT @sql = 'SELECT * FROM File_20170703'
EXEC sp_executesql @sql

More info about dynamic sql

答案 1 :(得分:0)

一个简单的TSQL"动态sql"看起来像这样:

DECLARE @file_name  AS VARCHAR(100)
DECLARE @query  AS VARCHAR(MAX)

SET @file_name = 'file_20170101'

SET @query = 'SELECT * FROM ' + @file_name

execute(@query)

基本上你需要通过将查询的各个部分连接在一起来创建一个有效的sql查询,然后你可以执行整个大字符串作为你的查询。

答案 2 :(得分:-2)

您可以将SQL Cursor与while循环一起使用。这里给出了一些例子: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/while-transact-sql