我有一个只有一行的表A:
CODE | DATE
202211 | 2022-11
此表将在每个月底自动更新(例如:下个月将改为2022 - 12和2022-12)
我想使用'CODE'和'DATE'使查询成为动态查询,并在SSIS中使用变数和执行SQL工作。我的原始查询如下所示:
SELECT * FROM X
WHERE PERIOD = '202211', EXPDATE > '2022-11'
我想让它在表A改变的时候,我不需要改变查询。这是我已经尝试过的:
DECLARE @Period varchar(50)
DECLARE @Expdate varchar(50)
SET @Period = ?
SET @Expdate = ?
SELECT * FROM X
WHERE PERIOD = @Period, EXPDATE > @Expdate
当我尝试使用'?'运行时,正如文档中所说的那样,它不起作用,但当我将'?'改为硬代码时,它会运行,所以我很确定至少我的查询起作用了。是我遗漏了什么,还是我将变量设置错了。
这是我的变量设置
Name | Scope | Data type | Value | Expression
position | MyDtsx | String | |
date | MyDtsx | String | |
这是我的SQL任务设置
General
__________________________
Result Set = Single Row
SQLSourceType = Direct Input
SQLStatement = 'SELECT CODE as position, DATE as date FROM A'
Result Set
__________________________
Result Name | Variable Name
position | User::position
date | User::date
1条答案
按热度按时间lf5gs5x21#
语法 无效
中 的 每 一 个
做 那个
格式
但是 , 如果 表
A
( Period 和 ExpDate 的 源 ) 与 表X
位于 同一 数据 库 中 , 则 跳过 无关 的 执行 SQL 任务 和 变量 , 只 进行 查询格式
注解 指出
表 A 和 表 X 来自 不同 的 数据 库 。 遗憾 的 是 , 查询 实际 上 是 好 的 , 因为 当 我 把 它 改为 '@Period = ' 2022-11'' 和 '@Expdate = ' 2022 - 11'' 时 , 它 就 运行 了 。
一 个 有效 的 回购 协议 。
我 的 工作 笔记 , 为 那些 跟随 在 家里 , 因为 名称 的 变化 搞 砸 了 我 几 次 。
# # SQL 安装 程序
执行 sql 任务 以 确保 我 有 数据
格式
# # SQL 获取 值
执行 sql 任务 。 硬 编码 , 因为 我 不 想 在 不同 的 数据 库 中 创建 另 一 个 表
格式
# # DFT 获取 数据
数据 流 . OLE DB Source 组件 使用 以下 查询
格式
Map 的 参数
控制 流程
数据 流