gpt4 book ai didi

sql - 一次循环10条记录,赋值给变量

转载 作者:行者123 更新时间:2023-12-02 04:25:49 27 4
gpt4 key购买 nike

我有一个包含 900 条记录的表。我想一次获取 10 条记录并将其分配给变量。下次我在 SSIS 中运行 for each 循环任务时,它将循环另外 10 条记录并覆盖变量。任何帮助将不胜感激。

我有这样的表,例如

EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008

这是我想尝试执行 sql 任务将 900 条记录拉到变量,将执行 sql 任务连接到每个循环,每个循环内部都有数据流任务,源有 sql 查询,目标是表。

select * from Dbo.JPKGD0__STP
where EMPID in ?

但这将在 1 循环中传递每个 empid,所以我想每次传递 10 个 empid。

如果我需要使用不同的方法/或其他任务来实现这一点,请告诉我。

最佳答案

步骤 (1) - 创建变量

您必须创建两个 int 类型的变量:

  • @[User::RowCount] >> 输入 int
  • @[User::Counter] >> 输入 int
  • @[User::strQuery] >> 输入字符串

将以下表达式分配给@[User::strQuery] :

"SELECT  EMPID
FROM Dbo.JPKGD0__STP
ORDER BY EMPIDASC
OFFSET " + (DT_WSTR,50)@[User::Counter] + " ROWS
FETCH NEXT 10 ROWS ONLY "

步骤 (2) - 获取行数

首先,添加一个Execute SQL Task使用以下命令:

SELECT Count(*) FROM Dbo.JPKGD0__STP;

并将结果存储在@[User::RowCount]中变量 (check this link 了解更多信息)。

步骤(3) - For循环容器

现在,添加 For Loop Container使用以下表达式:

  • 初始化表达式: @[User::Counter] = 0
  • EvalExpression: @[User::Counter] < @[User::RowCount]
  • 赋值表达式: @[User::Counter] = @[User::Counter] + 10

For loop container里面, 添加一个 Data flow task ,带有 OLE DB 源和目标。在 OLE DB 源中,选择 Access Mode作为SQL Command from variable并选择 @[User::strQuery]作为来源。


引用资料

关于sql - 一次循环10条记录,赋值给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54521074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com