Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SSIS执行SQL任务中的另一个SQL语句中插入动态SQL语句_Sql_Tsql_Ssis - Fatal编程技术网

在SSIS执行SQL任务中的另一个SQL语句中插入动态SQL语句

在SSIS执行SQL任务中的另一个SQL语句中插入动态SQL语句,sql,tsql,ssis,Sql,Tsql,Ssis,如何在SSIS中使用执行SQL任务使代码成为动态代码 代码A SELECT SUM(DuplicateCount) AS TotalRow FROM ( SELECT COUNT(ID + CheckCode) AS DuplicateCount FROM Tbl_CheckCode GROUP BY ID, CheckCode HAVING COUNT(ID + CheckCode) > 1 ) AS U 我尝试将代码存储在一个对象变量中,以便按如下方式使用它 代码B SELECT S

如何在SSIS中使用执行SQL任务使代码成为动态代码

代码A

SELECT SUM(DuplicateCount) AS TotalRow
FROM (
SELECT COUNT(ID + CheckCode) AS DuplicateCount
FROM Tbl_CheckCode
GROUP BY ID, CheckCode
HAVING COUNT(ID + CheckCode) > 1
) AS U
我尝试将代码存储在一个对象变量中,以便按如下方式使用它

代码B

SELECT SUM(DuplicateCount) AS TotalRow
FROM (?) AS U

然而,SSIS似乎不允许这样做。有什么想法吗?

使用另一个变量来创建整个SQL语句,并在执行SQL任务中使用它

@CodeAVar = 'SELECT SUM(DuplicateCount) AS TotalRow
FROM (' + @CodeBVar + ') AS U'
我已经弄明白了

在执行SQL任务编辑器的表达式部分下,我将以下代码设置为SQLStatementSource

"SELECT SUM(DuplicateCount) AS TotalRow
FROM (" + @[User::SQLQuery] + ") AS U"
并自动在General部分下的SQLStatement中生成以下代码:

SELECT SUM(DuplicateCount) AS TotalRow
FROM () AS U

我不确定按ID、checkcode分组的计数(ID+checkcode)是否会给出您期望的结果。你为什么这样数?从表group by id中选择id、checkcode、count(),我希望看到的是count()大于1的checkcode。count(id+checkcode)显示id和checkcode组合的计数。如果没有参数,就不能使用count()。count(*)或count(1)也可以很容易地工作…看到这样的结果有点奇怪,我想知道您是否希望结果有所不同,它显示的是相同的输出。这不是真正的问题:)问题是,@CodeBVar是一个对象变量。我尝试在表达式中使用它,SSIS抛出一个错误,表示表达式中不支持数据类型对象。@CodeBVar包含什么?它是否包含字符串“SELECT COUNT(ID+CheckCode)…”或者它是否包含执行该查询的结果集?它包含存储在对象变量中的字符串“SELECT COUNT(ID+CheckCode)…”。那么,将@CodeBVariable从对象类型更改为字符串类型应该是一件简单的事情,因为它用于包含字符串数据。