sql - 从参数动态 SQL 查询

标签 sql sql-server excel tsql dynamic-sql

我正在努力解决 tSQL 中与 Excel ODBC 一起使用的动态查询问题。

通过适用于 SQL Server 的 ODBC 驱动程序 11 的 SQL Server 2016

我找到了这篇文章,但它仅使用存储在参数中的表名称,我需要实际的表位于参数内:Simple dynamic TSQL query syntax

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 = 'Select * from @t'
set @sql = @query + @where
EXEC(@sql)

这会导致错误消息必须声明表变量“@t”

不幸的是,我无法使用临时表,因为连接器不支持临时表。

我的原始查询要复杂得多,包含 6 个不同的参数,所有这些参数都在不同的点注入(inject)到查询中,以及 2 个保存临时结果的表参数

提前致谢

最佳答案

您只需将表声明为查询的一部分。该表在该范围内声明和识别:

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)

结果:

enter image description here

关于sql - 从参数动态 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48708414/

相关文章:

sql - 在 SQL 中无约束地向表添加新列

mysql - 使用带有 where an in 运算符的联接时出现 sql 查询错误

mysql - 查询以将选定行中的价格值增加 15%

java - 使用逗号分隔值构建字符串

SQL 构建类型 2 维度

python - 迭代 python 数据框中的列以进行计算并在现有列之间插入新列

excel - 当我保存 CSV 并再次编辑时,列合并了

sql-server - 通过 SQL 查询获取 SQL Server 架构?

父子关系的 SQL 查询递归

Excel货币快捷方式产生€符号