来自参数的动态tSQL查询
我正在努力使用tSQL中的动态查询来与Excel ODBC一起使用 SQL Server 2016通过用于SQL Server的ODBC驱动程序11 我找到了这篇文章,但它只使用存储在参数中的表名,我需要实际的表位于参数中: 这导致错误消息必须声明表变量“@t” 不幸的是,我不能使用临时表,因为连接器不支持临时表 我的原始查询要复杂得多,它包含6个不同的参数,所有参数都在查询的不同点注入,还有2个保存临时结果的表参数来自参数的动态tSQL查询,sql,sql-server,excel,tsql,dynamic-sql,Sql,Sql Server,Excel,Tsql,Dynamic Sql,我正在努力使用tSQL中的动态查询来与Excel ODBC一起使用 SQL Server 2016通过用于SQL Server的ODBC驱动程序11 我找到了这篇文章,但它只使用存储在参数中的表名,我需要实际的表位于参数中: 这导致错误消息必须声明表变量“@t” 不幸的是,我不能使用临时表,因为连接器不支持临时表 我的原始查询要复杂得多,它包含6个不同的参数,所有参数都在查询的不同点注入,还有2个保存临时结果的表参数 提前感谢您只需要将表声明为查询的一部分。该表在该范围内声明和识别: decla
提前感谢您只需要将表声明为查询的一部分。该表在该范围内声明和识别:
declare @t table(value1 int, value2 nvarchar(1024))
insert @t select 1 as value1, 'test' as value2
declare @where nvarchar(max)
declare @query nvarchar(max)
declare @sql nvarchar(max)
set @where = ' where value1 = 1'
set @query = 'declare @t table(value1 int, value2 nvarchar(1024))
insert @t select 1 as value1, ''test'' as value2
select * from @t'
set @sql = @query + @where
exec(@sql)
结果:
为什么它必须是一张桌子?看起来您想要使用一些变量,并且能够在JOIN子句中使用它们。
declare @t table(value1 int, value2 nvarchar(1024))
insert @t select 1 as value1, 'test' as value2
declare @where nvarchar(max)
declare @query nvarchar(max)
declare @sql nvarchar(max)
set @where = ' where value1 = 1'
set @query = 'declare @t table(value1 int, value2 nvarchar(1024))
insert @t select 1 as value1, ''test'' as value2
select * from @t'
set @sql = @query + @where
exec(@sql)