SQL任务选择前N条记录,其中参数中的变量在哪里?

时间:2018-07-10 18:07:43

标签: ssis

我在一个包中的其他地方有另一个任务,我可以通过脚本任务来构建sql命令,但是现在我有一个更简单的sql任务,我想对获取的记录数进行参数化,并通过包变量来驱动此参数

现在:

SELECT TOP 10 col1,col2,col3 from TABLE-A

我需要使用的内容
例如。 SELECT TOP ? col1,col2,col3 from TABLE-A

在哪里?对应于int类型的包变量。

我可以仅使用SQL任务来执行此操作,而不必先通过脚本任务来派生该语句吗?

[更新]
解决方案是我所怀疑的,我只是在sql任务之前添加了另一个脚本任务,并在那里生成了语句。然后将sql任务更改为使用包含该语句的变量。

3 个答案:

答案 0 :(得分:2)

使用该变量在单独的变量中构建动态sql字符串,然后执行动态sql字符串变量。

答案 1 :(得分:0)

参数只能在WHERE子句中使用。

如Tab所述,您将需要创建一个变量表达式来构造SQL语句。然后,在“执行SQL任务”中,告诉它使用SQL字符串(请参阅“将查询参数映射到变量”部分中的项目符号要点4)。

https://docs.microsoft.com/en-us/sql/integration-services/control-flow/execute-sql-task?view=sql-server-2017#parameters-in-the-execute-sql-task

答案 2 :(得分:0)

declare @intVal as int = 5
select * from
(
    select ROW_NUMBER() over(order by Id) as RowNo, * from <tableName>
)a
where a.RowNo <= @intVal

这里@intVal将是参数,应该在SQL任务中进行映射